关于平台切换编译的问题

lionelmessiCODE 2018-03-13 04:57:15
本人在VS平台下用C#调用Matlab文件,除此之外还有C++DLL;机器平台是X64;将所有平台切换到64位进行编译时,之前的C++导入的dll函数全部变为无法解析外部符号,尝试按照网上教程将lib;H;以及dll添加依赖项,但是还是无法通过编译;将平台切换到Win32就没有这种情况了;
现在不知道该怎么解决这个问题,头疼

...全文
323 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-03-14
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,再将b.txt改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 可以将临时文件放在RamDisk上提高效率减少磨损磁盘。 数据的结构很复杂的话,文本文件的格式问题可参考json或xml 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸! 请自行将以上A语言替换为32位程序,B语言替换为64位程序。
mstlq 2018-03-13
  • 打赏
  • 举报
回复
在64位的windows系统中,一个64位进程不能加载一个32位dll,同理一个32位进程也不能加载一个64位dll。也就是说64bit的操作系统需要注意一个对应关系,64bit的EXE对应64bitDLL,32bit的EXE对应32bit的DLL。 如果你使用VS编写的应用程序,使用的是win32平台则意味着你的应用程序是32位的,则该应用程序在调用dll时应该使用的32位dll。如果你的应用程序使用的是x64平台则该应用程序是64位程序,应该调用的是64DLL. 非要折腾64位进程使用32位dll中提供的内容的话,参考下面的.... https://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ http://blog.csdn.net/CNHK1225/article/details/53884710 需要进程间通信和对COM有一定了解 非常麻烦,不建议楼主尝试,直接编成32位版本不是挺好吗?
zhangyiant 2018-03-13
  • 打赏
  • 举报
回复
你的lib,dll是32位的吧。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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