为什么DllImport不能与“__Internal”一起使用?
我有C ++共享库,它为Linux和Windows提供了导出方法int MyFunc()
。
从C#开始,我会使用以下签名调用MyFunc
。
[DllImport(@"__Internal", CharSet = CharSet.Ansi, EntryPoint = "MyFunc")] static extern unsafe int MyFunc(); // Later I'm using : MyFunc();
这段代码在Windows上工作正常但在linux内部这会抛出exception的EntryPointNotFound
。
我用-rdynamic选项编译了我的C ++库,我可以看到MyFunc被导出为带有nm的D标志,但这对我没有帮助。
没有任何改变,如果我只是改变DllImport(@"__Internal"
到DllImport(@"mys.so"
那么在linux上工作正常但是我必须在Windows中使用DllImport(@"mys.dll"
这会破坏代码交叉兼容特征。
所以我想避免这种情况。
我没有看到为什么__Internal
不能在Linux上工作的任何错误。
请注意,我正在使用单声道。
知道为什么这不适用于Linux吗?
你可以在windows和linux上使用它:
[DllImport ("mys")]
将根据平台添加适当的扩展(这适用于.NET和单声道)。
上述就是C#学习教程:为什么DllImport不能与“__Internal”一起使用?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022251.html