4

私は .NET を初めて使用しますが、MonoTouch/Droid を使用して、いくつかのコア コードを共有できるモバイル アプリケーションを作成することに興味があります。

libxml2など、使用したい C スタイルの API ライブラリが多数あります。これらのネイティブ ライブラリ メソッドを Mono で呼び出すにはどうすればよいですか? Windows で開発している場合、Windows からコンパイルされた同じバイナリを使用できますか? OS X で開発している場合、Windows バイナリを使用できますか?

4

1 に答える 1

7

これらのネイティブ ライブラリ メソッドを Mono で呼び出すにはどうすればよいですか?

p/invoke (プラットフォーム呼び出し) を使用して、任意の .NET 言語からネイティブ C コードを呼び出します。ネイティブ ライブラリを使用するには、(自分の前にそれを行った人を見つけるための) これらの宣言を記述する必要があります。@Marcelo がコメントしたように、多くの場合、ほとんどの C ライブラリに代わる、非常に優れた、はるかに使いやすい .NET の代替手段があります。

これは MonoTouch でも機能します。ただし、Apple iOS ではユーザー提供の動的ライブラリ ( OSX/iOS およびWindows) とのリンクが許可されていないため、静的ライブラリ ( .aOSX では Windows など) を提供する必要があります。.lib.dylib.dll

Windows で開発している場合、Windows からコンパイルされた同じバイナリを使用できますか?

Windows で生成されたバイナリは、Windows 上の Mono で問題なく動作するはずです。Windows でも Microsoft .NET を使用できます。

OS X で開発している場合、Windows バイナリを使用できますか?

バイナリが .NET でコンパイルされたコードである場合は、はい- p/invoke 宣言が移植可能である限り (たとえば、32 ビット タイプと 64 ビット タイプ)。

バイナリがネイティブ コードの場合は、いいえ。Mono は Windows エミュレーターではないことに注意してください。.EXE または .DLL 内で CIL コードを実行しますが、ネイティブ Windows コードを実行したり、Windows ネイティブ API (Windows 外) へのアクセスを提供したりしません。

于 2012-04-11T04:05:28.203 に答える