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