2
我有C++共享庫,它爲Linux和Windows導出方法int MyFunc()
。爲什麼DllImport不適用於「__Internal」?
從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被導出爲D標誌,但是這對我也沒有幫助。
沒有,如果我簡單地改變DllImport(@"__Internal"
到DllImport(@"mys.so"
然後將工作在Linux上很好,但後來我在這打破代碼交叉兼容的窗戶使用DllImport(@"mys.dll"
任何變化。
所以我想避免這一點。
我沒有看到任何錯誤,爲什麼__Internal
不適用於Linux。
請注意,我正在使用單聲道。
任何想法,爲什麼這不適用於Linux?
謝謝。這已經解決了我的問題。但是你知道它有什麼問題嗎? – 2013-03-26 18:11:07
只有在可執行文件中定義符號時才使用「__Internal」。您似乎有一個動態庫,然後您必須使用庫名稱。 – 2013-03-26 21:24:56