coff2omf  vc.lib  bc.lib

implib -f xxx.lib xxx.dll

dll文件为VC编译的动态库
lib文件为你需要转换的c++ builder 使用的静态库。

这也是c++ builder自带的转换工具,控制台里面可输入implib -h查看命令使用帮助。

很遗憾,由于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/C++ code
LIBRARY XXX.DLL
EXPORTS
___CPPdebugHook @2 ;
___CPPdebugHook _aFunc @1 ;
_aFunc

那么删除后就变成了:

C/C++ code
LIBRARY XXX.DLL
EXPORTS
__CPPdebugHook @2 ;
___CPPdebugHook aFunc @1 ;
_aFunc

4、用VC的LIB工具,根据上面的def文件生成lib文件。如:LIB /DEF:XXX.def。生成lib文件之后,VC便可以使用这个lib文件了。
综上说来,两种工具开发的DLL在相互使用的时候,主要的问题便是lib库的问题,能把这一问题解决好行了。

C++Builder及VC的库相互调用的更多相关文章

  1. C语言下动态库相互调用

    前段时间需要完成多个模块业务,而这些模块的接口都是一样的,于是为了方便管理就把每个模块都根据接口封装成了SO库,这里就留下SO库调用样例 SO库源文件代码: //TestSo.c #include & ...

  2. CVI中调用VC动态库

    1.在VC环境中建立新工程,创建32位动态库(Win32 Dynamic-Link Library)  -> A simple DLL project 2.在工程中可加入别的动态库,在工程菜单中 ...

  3. Linux链接库三(C跟C++之间动态库的相互调用)

    http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http ...

  4. C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  5. Lua与C++相互调用

    {--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} ...

  6. JAVA和C/C++之间的相互调用。

    在一些Android应用的开发中,需要通过JNI和 Android NDK工具实现JAVA和C/C++之间的相互调用. Java Native Interface (JNI)标准是java平台的一部分 ...

  7. C&C++——C函数与C++函数相互调用问题

    C C++相互调用 在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题.近来在主程序是C语 ...

  8. 各编程语言 + aardio 相互调用示例

    代码简单.复制可用.aardio 快速调用 C,C++,C#,Java,R,V,Python,JavaScript,Node.js,Rust,PHP,Ruby,PowerShell,Fortran,D ...

  9. WebView中Js与Android本地函数的相互调用

    介绍 随着Html5的普及,html在表现力上不一定比原生应用差,并且有很强的扩展兼容性,所以越来越多的应用是采用Html与Android原生混合开发模式实现. 既然要实现混合开发,那么Js与Andr ...

随机推荐

  1. Z Fighting Problem

    Here is a video about unity depth shader workarounds: http://www.burgzergarcade.com/tutorials/game-e ...

  2. Practice:输入年月日,判断该时间为一年的第几天

    #-*- coding:utf- -*- ''' Created on -- # 输入年月日,判断为一年的第几天 @author: AdministrInputator ''' def leapYea ...

  3. linux安装,window上安装centos虚拟机

    使用的软件如下 VMware_workstation_full_12.5.2.exeCentOS-6.5-x86_64-minimal.iso 安装要点: 1 先安装VMware2 建立一个虚拟机,注 ...

  4. javascript学习第三课引用类型object

    主要内容: 1.object 是所有类型的基类 实例化对象: 1. var obj = new Object(); 2. var obj = {}; 设置对象属性和方法: obj.name = 'he ...

  5. 【erlang】erlang几种生成随机数的方法

    erlang有三个生产随机数的办法 random:uniform(). 这个函数是erlang库random模块提供的.一般都采用这个. 1> random:uniform(). 0.44358 ...

  6. try-catch-finally的含有return使用揭秘

    很多人都会纠结这么一个问题try-catch-finally中有return的情况,我自己总结如下: 如果是值类型的话 请看代码 using System; using System.Collecti ...

  7. Browser增加下载路径选择功能

    SWE Browser中有xml/download_settings_preferences.xml, 但在代码中却没有调用,导致“设置”中没有”选择下载路径“功能. 在com.android.bro ...

  8. PowerDesigner 建模

    File—New Model—Physical Data Model—Physical Diagram—Model name设置为test,DBMS属性设置为Microsoft SQL Server  ...

  9. js学习-自定义函数、对象的字面量、json对象学习小结

    一.自定义对象的构造: var student=new Object(); //object是顶级对象,使用构造函数的方法创建一个对象,此处的意思是创建了一个学生的空对象 student.name=& ...

  10. span width无效

    在默认情况下label.span 设置width 是无效的.一般要display属性 display:block; 但是他会自动加一个换行,如果不想换行的话,可以用 display:inline-bl ...