int MyFunc()
LinuxとWindowsの両方にメソッドをエクスポートするC++共有ライブラリがあります。
C#からMyFunc
、次の署名を使用してを呼び出します。
[DllImport(@"__Internal", CharSet = CharSet.Ansi, EntryPoint = "MyFunc")]
static extern unsafe int MyFunc();
// Later I'm using :
MyFunc();
このコードはWindowsでは正常に機能しますが、Linux内では例外がスローされますEntryPointNotFound
。
-rdynamicオプションを使用してC++ライブラリをコンパイルしましたが、MyFuncがnmのDフラグとしてエクスポートされていることがわかりますが、これも役に立ちませんでした。
変更DllImport(@"__Internal"
を加えなくてもDllImport(@"mys.so"
、Linuxで問題なく動作しますDllImport(@"mys.dll"
が、Windowsで使用する必要があります。これにより、コードの相互互換性が失われます。
だから私はこれを避けたい。
__Internal
Linuxで動作しない理由に間違いはありません。
私はモノラルを使用していることに注意してください。
これがLinuxで機能しない理由はありますか?