金门高粱酒哪种好:C++Builder及VC的DLL相互调用
来源:百度文库 编辑:九乡新闻网 时间:2024/05/13 18:27:06
原创帖,引用的朋友请标明出处。
常在江湖飘,少不了要和DLL打交道。有时我们需要使用C++Builder编写一个DLL,然后拿到VC中用(比如用C++Builder写一个窗体封装到DLL);有时又要拿VC编写的DLL在C++Builder使用(比如拿到一个产品的开发包,这个包是一堆用VC写的DLL)。
很遗憾,由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实际带来了很多的麻烦。下面来说一说如何解决这个问题。
一、VC生成DLL,C++Builder调用。
1、用extern "C"修饰VC导出的DLL函数。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的implib工具生成DLL对应的lib文件。如:implib -a xxx.lib xxx.dll(注意,implib一定要带-a开关)。生成lib文件之后,C++Builder便可以使用这个lib文件了。
二、C++Builder生成DLL,VC调用。
1、用extern "C"修饰C++Builder导出的DLL函数。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的impdef工具生成DLL对应的def文件。如:impdef xxx.def xxx.dll。
3、用记事本打开xxx.def文件,删去每个函数名前的"_"。如原来的def文件为:
常在江湖飘,少不了要和DLL打交道。有时我们需要使用C++Builder编写一个DLL,然后拿到VC中用(比如用C++Builder写一个窗体封装到DLL);有时又要拿VC编写的DLL在C++Builder使用(比如拿到一个产品的开发包,这个包是一堆用VC写的DLL)。
很遗憾,由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实际带来了很多的麻烦。下面来说一说如何解决这个问题。
一、VC生成DLL,C++Builder调用。
1、用extern "C"修饰VC导出的DLL函数。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的implib工具生成DLL对应的lib文件。如:implib -a xxx.lib xxx.dll(注意,implib一定要带-a开关)。生成lib文件之后,C++Builder便可以使用这个lib文件了。
二、C++Builder生成DLL,VC调用。
1、用extern "C"修饰C++Builder导出的DLL函数。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的impdef工具生成DLL对应的def文件。如:impdef xxx.def xxx.dll。
3、用记事本打开xxx.def文件,删去每个函数名前的"_"。如原来的def文件为:
C++Builder及VC的DLL相互调用
[C#/C ]C#调用非托管DLL的APIs
vc程序调用别人的dll报错的原因分析 - cay22的专栏 - CSDN博客
C++Builder常用的文件函数
vc中调用Flex的总结
VB调用.NET DLL
VC++6.0程序去掉程序对msvcp60.dll的倚赖
在VC中创建DLL文件的方法步骤
Asp.net调用DLL文件
VB调用C++ DLL注意事项
VC中利用多线程技术实现线程之间的通信 - 开发者在线 - www.builder.com...
在VC中调用 WebService
C#程序调用非托管C++ DLL文件的方法 - Chase的技术博客 - 博客园
在C#中如何调用dll文件
VC++ 6.0 编译 opencv1.0 中 cvaux.dll的3个错误原因
SDL 资料收集站 - C BUILDER让你的任务栏图标动起来
演示文稿、flash动画、几何画板三种软件的相互调用技巧
VC++动态链接库(DLL)编程88888
VC 动态链接库(DLL)编程深入浅出
关于怎么做matlab的com组件,被vc调用的例子
VC++中打开文件和保存文件对话框的调用1
动态链接库在VC调用
定制调试诊断工具和实用程序——摆脱DLL“地狱”(DLL Hell)的困扰(一) - VC知识库文章
python中调用c++(Boost