モノラルのObjective-C
-
27-09-2019 - |
質問
OSXに移植したい.NETアプリケーションがあります。これまで、WebCamの処理にDirectShowDLLを使用していました。MonoにObjective-CDLLを使用できますか?どうやって?私はMacの初心者です。これに対する既存の(WebCam処理)ソリューションはありますか?より良い解決策はありますか?
解決
これを行うにはQTKitフレームワークを使用します。特に、QTCaptureViewを再利用可能なNSViewとして使用し、既存のウィンドウまたはアプリケーションに埋め込んで実際のビデオキャプチャを行うことができます。
質問を見てから数分前にMonoMacバインディングにキャプチャのサポートを追加したので、少し作業を行う必要があります。
手順:
-
次の説明に従って、Mono、MonoDevelop、およびMonoMacアドインをインストールします: http://mono-project.com / MonoMac
-
GithubからMonoMacとMacCoreの最新ソースをダウンロードします: http://github.com/mono/ maccore と
http://github.com/mono/monomac -
monomac / srcディレクトリに移動し、「makeupdate」と入力してMonoMac.dllを最新バージョンに更新します
この時点で、他のNSViewと同じようにMonoMacアプリケーションでQTCaptureViewを使用できるようになります。 Objective-CでのAPIの使用法を示すチュートリアルはこちらです:
他のヒント
「Monoのobject-cdll」の意味がわかりません。
絶対的な最善のアプローチは、ターゲットとするプラットフォームを学習し、ロジックと一般的なアーキテクチャのみを移植することです。
Mac OS Xでカメラ、マイク、ライン入力などにアクセスするには、QTKit(Quicktime Kit)を使用します。Webカメラビューの設定、ファイルへの記録、フレームの取得などは非常に簡単です。この種のものを開発者がドラッグアンドドロップできるように組み込まれ、設計されています。
MonoMacは1つの選択肢にすぎません。Monobjc、CocoSharp、NObjective、MObjc / MCocoa、ObjC#があります(どちらかを選択することはできません)。これらはすべてMonoとCocoaの間の「架け橋」です。つまり、MonoアプリケーションでCocoaAPIを使用できます。しかし、私はAPIを直接使用したくありません。WebCamを処理するための関数を提供する動的にリンクされたライブラリが必要です(前述したように、これまでWindowsで実行していました)。言い換えれば、QTKit用のMonoのラッパーが必要です。
PS:object-cでアプリケーションを書き直すと、それは数か月を意味し、将来、アプリケーションが大きくなるときに二重の作業を行います。object-cは大好きですが、不要な作業は嫌いです。
XCodeで受け入れられたコードを試しましたが、Monodevelopに移植しようとすると、いくつかのクラスが欠落しています。QTCaputureSession、QTCaputreDeviceInput、CVimagebuffer。 (申し訳ありませんが、以前のメッセージを編集できません。これは別のアカウントです。)