我有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吗?
你可以在windows和linux上使用它:
[DllImport ("mys")]
Run Code Online (Sandbox Code Playgroud)
将根据平台添加适当的扩展(这适用于.NET和单声道).
| 归档时间: |
|
| 查看次数: |
2367 次 |
| 最近记录: |