64位lib调用32位dll

幻夢之葉 2014-02-12 11:51:44
//(忽略)64位程序调用一个64位lib(静态库)

其中lib里面调用了一个32位dll(第三方,没有源码)
这里会提示找不到外部变量XXX(dll里面的函数)
我只知道64进程不能调用32位dll

是不是64位lib也不可以调用32位dll?
...全文
718 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2014-02-14
  • 打赏
  • 举报
回复
感谢各位大大的分析解答,小弟拜上!!
神-气 2014-02-14
  • 打赏
  • 举报
回复
引用 11 楼 jianwen0529 的回复:
[quote=引用 9 楼 ADF1230 的回复:] [quote=引用 7 楼 ADF1230 的回复:] [quote=引用 6 楼 jianwen0529 的回复:] [quote=引用 5 楼 ADF1230 的回复:] [quote=引用 2 楼 zhuobattle 的回复:] 曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?[/quote] 确实是可以,写一个程序exe(x64编译,包含lib库的接口头文件,lib文件及32位dll),静态调用lib(x64编译),lib动态调用dll(win32编译) 所以我也很郁闷啊,尝试多次的结果,我也希望有人能解答!![/quote] 所谓lib,dll,exe,其实是同一个东西,32位于64位代码不可能共存。[/quote] http://msdn.microsoft.com/en-us/library/windows/desktop/aa384249%28v=vs.85%29.aspx However, 32-bit processes cannot load 64-bit DLLs for execution, and 64-bit processes cannot load 32-bit DLLs for execution. [/quote] 这个我懂,直接是不行!通过lib反正我自己测试是可以,不明就里! 其实我也不想这样子调用,没办法dll是第三方的,而且只有32位版本![/quote] dll的lib只是用于链接的,我不确信是否包含32/64位机器的信息,dll只有32位的那你调用程序也只能是32位的。别多做无用功。
Orange_ou 2014-02-13
  • 打赏
  • 举报
回复
程序搞的越复杂 维护越困难
YTerrenceLau 2014-02-13
  • 打赏
  • 举报
回复
楼上不止一个人说不行吧,连比尔盖茨都说不行,你还要继续尝试?链接过了,运行就没问题? 你是打算再花两个星期调试一下? 对于你这个情况,要么找库的供应商,花钱升级,要么就把你自己的程序做成32bit的。
幻夢之葉 2014-02-13
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
不要做32位代码修改为64位代码或者64位代码修改为32位代码的无用功。 也不要做用32位代码直接调用64位代码库或用64位代码直接调用32位代码库这样复杂、这样容易出错的傻事。 只需让32、64位代码的输入输出重定向到文本文件,或修改32、64位代码让其通过文本文件输入输出。 即可很方便地让32、64两种位宽之间协调工作。
赵老师,您忍心把一个程序割成两半么
幻夢之葉 2014-02-13
  • 打赏
  • 举报
回复
引用 9 楼 ADF1230 的回复:
[quote=引用 7 楼 ADF1230 的回复:] [quote=引用 6 楼 jianwen0529 的回复:] [quote=引用 5 楼 ADF1230 的回复:] [quote=引用 2 楼 zhuobattle 的回复:] 曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?[/quote] 确实是可以,写一个程序exe(x64编译,包含lib库的接口头文件,lib文件及32位dll),静态调用lib(x64编译),lib动态调用dll(win32编译) 所以我也很郁闷啊,尝试多次的结果,我也希望有人能解答!![/quote] 所谓lib,dll,exe,其实是同一个东西,32位于64位代码不可能共存。[/quote] http://msdn.microsoft.com/en-us/library/windows/desktop/aa384249%28v=vs.85%29.aspx However, 32-bit processes cannot load 64-bit DLLs for execution, and 64-bit processes cannot load 32-bit DLLs for execution. [/quote] 这个我懂,直接是不行!通过lib反正我自己测试是可以,不明就里! 其实我也不想这样子调用,没办法dll是第三方的,而且只有32位版本!
赵4老师 2014-02-13
  • 打赏
  • 举报
回复
引用 12 楼 jianwen0529 的回复:
[quote=引用 10 楼 zhao4zhong1 的回复:] 不要做32位代码修改为64位代码或者64位代码修改为32位代码的无用功。 也不要做用32位代码直接调用64位代码库或用64位代码直接调用32位代码库这样复杂、这样容易出错的傻事。 只需让32、64位代码的输入输出重定向到文本文件,或修改32、64位代码让其通过文本文件输入输出。 即可很方便地让32、64两种位宽之间协调工作。
赵老师,您忍心把一个程序割成两半么[/quote] 你忍心让程序处理的数据连人也看不懂吗?
YTerrenceLau 2014-02-12
  • 打赏
  • 举报
回复
bukeyi.
赵4老师 2014-02-12
  • 打赏
  • 举报
回复
不要做32位代码修改为64位代码或者64位代码修改为32位代码的无用功。 也不要做用32位代码直接调用64位代码库或用64位代码直接调用32位代码库这样复杂、这样容易出错的傻事。 只需让32、64位代码的输入输出重定向到文本文件,或修改32、64位代码让其通过文本文件输入输出。 即可很方便地让32、64两种位宽之间协调工作。
神-气 2014-02-12
  • 打赏
  • 举报
回复
引用 7 楼 ADF1230 的回复:
[quote=引用 6 楼 jianwen0529 的回复:] [quote=引用 5 楼 ADF1230 的回复:] [quote=引用 2 楼 zhuobattle 的回复:] 曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?[/quote] 确实是可以,写一个程序exe(x64编译,包含lib库的接口头文件,lib文件及32位dll),静态调用lib(x64编译),lib动态调用dll(win32编译) 所以我也很郁闷啊,尝试多次的结果,我也希望有人能解答!![/quote] 所谓lib,dll,exe,其实是同一个东西,32位于64位代码不可能共存。[/quote] http://msdn.microsoft.com/en-us/library/windows/desktop/aa384249%28v=vs.85%29.aspx However, 32-bit processes cannot load 64-bit DLLs for execution, and 64-bit processes cannot load 32-bit DLLs for execution.
一如当初 2014-02-12
  • 打赏
  • 举报
回复
放弃吧,骚年
神-气 2014-02-12
  • 打赏
  • 举报
回复
引用 6 楼 jianwen0529 的回复:
[quote=引用 5 楼 ADF1230 的回复:] [quote=引用 2 楼 zhuobattle 的回复:] 曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?[/quote] 确实是可以,写一个程序exe(x64编译,包含lib库的接口头文件,lib文件及32位dll),静态调用lib(x64编译),lib动态调用dll(win32编译) 所以我也很郁闷啊,尝试多次的结果,我也希望有人能解答!![/quote] 所谓lib,dll,exe,其实是同一个东西,32位于64位代码不可能共存。
幻夢之葉 2014-02-12
  • 打赏
  • 举报
回复
引用 5 楼 ADF1230 的回复:
[quote=引用 2 楼 zhuobattle 的回复:] 曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?[/quote] 确实是可以,写一个程序exe(x64编译,包含lib库的接口头文件,lib文件及32位dll),静态调用lib(x64编译),lib动态调用dll(win32编译) 所以我也很郁闷啊,尝试多次的结果,我也希望有人能解答!!
神-气 2014-02-12
  • 打赏
  • 举报
回复
引用 2 楼 zhuobattle 的回复:
曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信
windows下32位进程能与64位进程共享内存吗?
神-气 2014-02-12
  • 打赏
  • 举报
回复
64位不能与32位代码共存的,不知道你是怎么用64位的lib动态调用32位dll的?你确信你调用的真是32位的dll ?
幻夢之葉 2014-02-12
  • 打赏
  • 举报
回复
我测试了一下! 1.64位lib静态调用32位dll,64位进程引用lib出错 2.64位lib动态调用32位dll,64位进程引用lib不会出错 不知道有没有遗漏某些东西!
zhuobattle 2014-02-12
  • 打赏
  • 举报
回复
曲线救国,呵呵,写个32位程序加载32位dll,然后进程间通信

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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