Csharp/C#教程:为什么DllImport不能与“__Internal”一起使用?分享


为什么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

(0)
上一篇 2022年1月6日
下一篇 2022年1月6日

精彩推荐