C#调用两个dll,一个目标平台必须是x86,一个目标平台是x64

muyiliu 2020-09-25 03:44:06
C#在一个工程中同时调用两个dll,一个目标平台必须是x86,一个目标平台是x64。现在调试只能用一个改一个目标平台。这个怎么解决啊?
...全文
9754 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
学乐先 2022-06-08
  • 打赏
  • 举报
回复

我也遇见和你一样的问题,这个需要重新装matlab为32位的,然后matlab的dll就变为32位然后c#就可以调用了吗?是这样吗?

you2436 2020-11-19
  • 打赏
  • 举报
回复
主程序先判断当前平台是X86orX64,ifelse语句分别调用一个X86和X64的类,这两个类分别引用2个平台的dll文件,并封装成2个dll,我想这样应该可以解决吧
风中暮雨 2020-10-30
  • 打赏
  • 举报
回复
将两个Dll的目标平台设置成AnyCpu
乱臣贼子 2020-10-30
  • 打赏
  • 举报
回复
确保你的程序是64位的,就可以DLLImport x64、x86的DLL了。不冲突的。。。 不知道你的冲突点在哪里。。。 你的都是C/C++ 的DLL,你肯定要用DLLImport 导入的,只要保证你的程序是64位的,就都可以导入
muyiliu 2020-10-30
  • 打赏
  • 举报
回复
谢谢各位大神,已解决了。就是把matlab的mrc安装为32位,这样两个dll的目标平台都是x86了。还有一个做法就是做成两个exe也是可以的,通过进程管理实现。
良朋 2020-10-29
  • 打赏
  • 举报
回复
那就悲催了,有的DLL是严格要求X86或X64的,遇到这种情况,你必须重新找同平台的DLL,只要你想办法一定找得到。
wanghui0380 2020-10-29
  • 打赏
  • 举报
回复
把语音播报的独立出去,通过tcp或管道通讯,毕竟语音播报是附属功能不是主要功能,而且都是单向调用 ps:pc上语音播报TTS引擎多的是,难道是专用的设备厂家提供的sdk?
平底锅锅锅 2020-10-29
  • 打赏
  • 举报
回复 1
参考链接:https://blog.csdn.net/C_gyl/article/details/85330426
狂野的小强 2020-10-14
  • 打赏
  • 举报
回复
应该只能用多进程,再用管道通信来调用了。
DoEvents2 2020-09-29
  • 打赏
  • 举报
回复
写三个exe,不同平台exe分别与主exe进行通讯
一叶知秋~ 2020-09-27
  • 打赏
  • 举报
回复
弄两台服务器
SayoKun 2020-09-27
  • 打赏
  • 举报
回复
这个问题我没遇到过,但是我认为你可以使用Assembly来加载其中一个DLL。唯一的缺点就是你需要自己重新给每个方法加层调用方法,不然多次使用起来会很麻烦~当你遇到无法调出自己想要的方法名时请使用dynamic来定义,这样你可以随便调用任何DLL中存在的方法。希望能帮助到你~
muyiliu 2020-09-27
  • 打赏
  • 举报
回复
引用 8 楼 อาเหว่ย的回复:
楼主,如果两个DLL同名。就使用两个EXE。或者在启动前从资源文件里提取需要的DLL。两个方法都可以。 如果两个DLL不同名。直接建两个引用类。根据平台调用即可。 资源提取的方法最方便。同不同名都可以。
我要同时调用两个不同名,功能也不一样,目标平台也不一样的dll
  • 打赏
  • 举报
回复
楼主,如果两个DLL同名。就使用两个EXE。或者在启动前从资源文件里提取需要的DLL。两个方法都可以。 如果两个DLL不同名。直接建两个引用类。根据平台调用即可。 资源提取的方法最方便。同不同名都可以。
SDHU 2020-09-27
  • 打赏
  • 举报
回复
dll 是C#的还是C++的? C#的就把exe编译成AnyCPU C++的话,两个不一样的DLL,目标版本又不一样,可能无解,改成两个exe调用也是办法
zhongguopeng 2020-09-26
  • 打赏
  • 举报
回复
好久没搞开发了。。。。
muyiliu 2020-09-26
  • 打赏
  • 举报
回复
引用 4 楼 howze的回复:
没理解楼主的意思,从你的描述看这是两个功能,两个dll名字一样吗?要是不一样直接引用就行了,为啥会冲突呢?
两个dll不一样。同时两个dll运行的目标平台也不一样
muyiliu 2020-09-26
  • 打赏
  • 举报
回复
引用 4 楼 howze的回复:
没理解楼主的意思,从你的描述看这是两个功能,两个dll名字一样吗?要是不一样直接引用就行了,为啥会冲突呢?
两个dll不一样。同时两个dll运行的目标平台也不一样
howze 2020-09-26
  • 打赏
  • 举报
回复
没理解楼主的意思,从你的描述看这是两个功能,两个dll名字一样吗?要是不一样直接引用就行了,为啥会冲突呢?
tcmakebest 2020-09-25
  • 打赏
  • 举报
回复
实在不行考虑双进程,就是有两个EXE文件,当然进程间通讯需要补补了.
加载更多回复(2)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧