32位程序访问64位DLL,使用COM组件
来源:互联网 发布:欢迎进入阳江网络问政 编辑:程序博客网 时间:2024/06/10 08:39
一直纠结于微软所谓的32位程序不能访问64位dll或64位程序不能访问32位dll,MSDN上的说明也不能完全理解。
这两天纠结的问题终于需要直面了,有个项目需要转到64位平台上运行(需要超4G内存),但它是用VC6.0开发的,第一反应想到下面几个方式:
1,将VC6.0项目转到VS2005及以上,确实这样做了,报出一堆错误,真心不想debug这个了,太古老了。
2,VC6.0开发64位程序,虽然网上有总总描述(安装windows SDK 2003等等),最终还是放弃了,毕竟VC6.0太老古董了,折腾了伤不起,编译的程序稳定性也不能保证。
3,即使真心转成VS2005以上或VC6.0 64位开发版,某些第三方dll是32位的,不能用了,也找不到源代码,对方也不会再support了。
4,再写个64位的exe进行进程间交互,这种方式想想头都炸了。
艰苦奋斗了一个通宵,使用COM组件的方式终于被我搞定了。太开心了,激励并留念。
具体方式转载别人的,如下:
工作流程: 1.创建一个进程外COM服务器(EXE)。 2.将32位dll的接口函数封装为COM服务器的相关接口。 3.注册COM服务器*.exe /regserver (注销 *.exe /unregserver)。 4.64位进程调用32位COM服务器接口,成功。从而曲线实现了64位进程调用32位dll。 具体步骤: 我首先创建了一个简单的dll工程,只输出一个函数int c = add(int a,int b); 生成lib和dll 然后创建一个进程外COM(EXE类型),内部链接dll,添加方法Method: Add(long *c) { *c = add(1,2);}编译生成。 然后注册COM,*.exe /regserver 最创建一个64位WIN32工程验证64位环境下方法调用是否正确,经验证正确!!! 结论:以上方法可以解决64位进程调用32位dll的问题
0 0
- 32位程序访问64位DLL,使用COM组件
- 64位程序调用32位DLL
- 32位和64位C++程序使用ADO访问ORACLE注意事项和区别
- 32位程序如何使用ADO访问64位Oracle数据库
- 32位程序如何使用ADO访问64位Oracle数据库[转]
- 32位程序如何访问64位的注册表
- C# 32位程序访问64位系统注册表
- C# 32位程序访问64位系统注册表
- C# 32位程序访问64位系统注册表
- C# 32位程序访问64位系统注册表
- 32位程序访问64位 system32文件夹时注意事项
- 32位程序如何访问64位的注册表
- .NET框架下64位系统使用32位dll
- 32位程序注入64位DLL到64位进程
- 32位程序注入64位dll到64位进程中失败
- C++,CLR,C#的DLL和EXE的32位程序,如何在64位系统上使用
- 【32位+64位】msvcr100.dll
- DLL的64位与32位
- 转换文档格式的方法——Word转PDF
- Retrofit的进阶之路(一)
- HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)
- Qt OpenGL教程
- 深刻剖析经典面试题之三:关于虚函数
- 32位程序访问64位DLL,使用COM组件
- Android运营商名称显示之SPN的读取
- 生成 iOS 动态库与静态库的方法
- 欢迎使用CSDN-markdown编辑器
- 注解(二)——解析注解案例
- Android运营商名称显示之PLMN与SPN显示规则
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
- C++模板参数具体概念讲解
- 欢迎使用CSDN-markdown编辑器