DLL本身是C++编写的,通过DllImport / PINVOKE的方式封装为C#可以调用的类:
[DllImport("Fwlib64.dll", EntryPoint="cnc_actf")]
public static extern short cnc_actf(ushort FlibHndl, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBACT a);
现在,在windows 操作系统中,以上的过程可以正常调用;但是在Linux环境下调用的时候,提示无法加载Fwlib64.dll,缺少dll或它的依赖项:
Unable to load shared library '/home/pi/workspace/publish2/Fwlib64.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: /home/pi/workspace/publish2/Fwlib64.dll: invalid ELF header
我尝试把可能依赖的dll都放到运行目录下,仍然无法正常调用。
请问,有没有高手碰到过类似的问题?
另外我这个DLL还有linux下的.SO格式的版本,是不是可以引用它?
在 linux 上需要引用 Fwlib64.so
[DllImport("Fwlib64.so", EntryPoint="cnc_actf")]
我问下 您这个问题解决了吗 我现在也遇到了这个问题
将动态库放在合适的目录,可以直接不加后缀:
[DllImport("Fwlib64", EntryPoint="cnc_actf")]
程序是用.net core3.0写的 dll是c++写的 然后在调用的时候就出错了
您好 请问下我的程序一直报这个错误 试图加载格式不正确的程序。 (0x8007000B)
请问下有没有什么好的解决办法
我也遇到了,怎么处理
@NavyHaijun: 同问,怎么处理,说是找不到这个库