为什么DllImport不能与"__Internal"一起使用?

Moh*_*kar 2 .net c# c++ mono

我有C++共享库,它可以导出int MyFunc()Linux和Windows的导出方法.

从C#我打电话给MyFunc以下签名.

[DllImport(@"__Internal", CharSet = CharSet.Ansi, EntryPoint = "MyFunc")]
static extern unsafe int MyFunc();
// Later I'm using :
MyFunc();
Run Code Online (Sandbox Code Playgroud)

这段代码在windows上运行正常但在linux内部这会引发异常EntryPointNotFound.

我用-rdynamic选项编译了我的C++库,我可以看到MyFunc被导出为带有nm的D标志,但这对我没有帮助.

没有任何改变,如果我只是DllImport(@"__Internal"改为DllImport(@"mys.so"然后将在Linux上正常工作,但后来我必须DllImport(@"mys.dll"在Windows中使用这打破代码交叉兼容的功能.
所以我想避免这种情况.

我没有看到任何错误,为什么__Internal不在Linux上工作.
请注意,我正在使用单声道.

知道为什么这不适用于Linux吗?

Rol*_*nge 5

你可以在windows和linux上使用它:

[DllImport ("mys")]
Run Code Online (Sandbox Code Playgroud)

将根据平台添加适当的扩展(这适用于.NET和单声道).