首页 新闻 会员 周边 捐助

请问.NET Core平台下调用C++动态库的问题

0
悬赏园豆:50 [待解决问题]

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格式的版本,是不是可以引用它?

落迦山的主页 落迦山 | 初学一级 | 园豆:152
提问于:2018-12-14 09:35
< >
分享
所有回答(4)
0

在 linux 上需要引用 Fwlib64.so

[DllImport("Fwlib64.so", EntryPoint="cnc_actf")]

推荐一篇参考博文:How To Bind C++ Code with Dotnet Core

dudu | 园豆:30778 (高人七级) | 2018-12-14 09:55
0

我问下 您这个问题解决了吗 我现在也遇到了这个问题

o王先生o | 园豆:402 (菜鸟二级) | 2019-11-15 09:08
0

将动态库放在合适的目录,可以直接不加后缀:
[DllImport("Fwlib64", EntryPoint="cnc_actf")]

alby | 园豆:323 (菜鸟二级) | 2020-06-08 14:32
0

程序是用.net core3.0写的 dll是c++写的 然后在调用的时候就出错了
您好 请问下我的程序一直报这个错误 试图加载格式不正确的程序。 (0x8007000B)
请问下有没有什么好的解决办法

Mr--WANG | 园豆:230 (菜鸟二级) | 2020-09-22 21:03

我也遇到了,怎么处理

支持(0) 反对(0) NavyHaijun | 园豆:200 (初学一级) | 2020-10-11 12:36

@NavyHaijun: 同问,怎么处理,说是找不到这个库

支持(0) 反对(0) Jeton | 园豆:202 (菜鸟二级) | 2020-11-23 09:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册