c++builder调用vc的dll

c#调用非托管C++生成的dll  最近在项目中碰到需要调用非托管C++生成的dll,下面将自己遇到的问题,以及解决的办法总结如下:  1.     问题:     我们通常去映射dll的方法是使用        public const string dllPath =path;                [DllImport(dllPath + "test.dll", EntryPoint = "test()", Se 阅读详情

  • 联系
  • 订阅随笔- 93  文章- 0  评论- 3 

    c++builder调用vc的dll

    $bcb/bin目录中有个implib.exe
    把你的vc.dll和implib.exe复制到c盘根目录下
    运行cmd
    进入c盘根目录执行
    c:\implib -a cb.lib vc.dll
    会生成cb.lib,将生成出的文件添加进入工程,然后再将对应的.h添加进入工程,将dll复制到项目路径下即可。

     

    --------------------------------------------------------------------------------------------------------
    VC++的.lib有两种:一种是静态DLL,其中包括函数的实际代码,一种是有DLL生成的.lib,其中并不包含代码,只是包含DLL的链接信息。对 于后一种比较简单,只需要使用C++ Builder中的命令行工具implib直接对DLL进行进行转换就可以了,不必理会VC++的.lib文件。但 是前一种就很麻烦了,因为VC++和BCB的.lib格式差别很大,无法直接使用或转换。以前我也遇到过类似的问题,一个硬件厂商只提供了VC++的库文 件,为了在BCB中使用,首先在VC++中建立一个DLL,添加若干函数,这些输出函数供BCB调用。在这些函数中调用.lib中的函数。这样BCB调用 DLL中的函数,DLL中的函数再调用.lib中的函数,虽然麻烦些,但可以解决问题。
    用Program Files\Borland\CBuilder6\Bin\coff2omf.exe转换就了! 
        主持人注:coff2omf可以转换微软的COFF格式为Borland使用的OMF格式。但是这个工具有一些限制:转换一般的C函数还可以,转换C++类有困难;这个工具在处理新版本的VC++生成的库时可能有问题。 
        另外,可以参考 “Using Visual C++ DLLs in a C++Builder Project”http://www.bcbdev.com /articles/vcdll.htm和http://www.bcbdev.com/articles/vcdll2.htm 
    据说VC的lib文件跟BCB不通用

    不过你也不用急啊,有dll文件可以自已生成lib文件滴

    implib filename.lib filename.dll

    就可以生成一个lib
    如果你有DLL的话可以用IMPLIB从DLL中生成符合BCB要求的LIB文件。也可以用COFF2OMF来转换LIB文件的格式。

    coff2omf   a.lib   b.lib   
      将库文件a.lib转换格式生成库文件b.lib

      如果他是一个dll的导出库,你可以用implib xxx.lib xxx.dll自己做一个lib

    如果他是vc的静态库,可以给coff2omf分别加几次不同的参数试试:
    -lib:ms
    -lib:st
    -lib:ca
    看有没有哪次可以的  

    ---------------------------------------------------------------------------

    命令行工具 TDUMP 允许你检查 DLL 导出函数的连接名字。下面向 DLL 调用 TDUMP 的命令。

      TDUMP -ee -m MYDLL.DLL > MYDLL.LST

      TDUMP 能报告许多关于 DLL 的信息。我们仅对 DLL 的导出函数感兴趣。-ee 命令选项指示 TDUMP 仅列出导出信息。-m 开关告诉 TDUMP 按 DLL 函数的原始格式显示。如果没有 -m 开关,TDUMP 将尝试把修饰过的函数转化为人们易读的格式。如果 DLL 很大的话,你应该重定向 TDUMP 的输出到一个文件里(通过附加的 > MYDLL.LST)。

      TDUMP 为源程序清单 A 和 B 的测试 DLL 输出如下:

      Turbo Dump Version 5.0.16.4 Copyright (c) 1988, 1998 Borland International
      Display of File DLL.DLL

      EXPORT ord:0000='CdeclFunction'
      EXPORT ord:0002='UnknownFunction'
      EXPORT ord:0001='_StdCallFunction@4'

      注意在 __stdcall 函数上的前缀下划线和后缀 @4。__cdecl 和未指定调用方式的函数没有任何修饰符。

    ----------------------------------------------------------------------------

    32位DLL的引入库是.lib格式,64位DLL的引入库是.a格式。64位的DLL只能在64位的程序中调用。检查一下.a文件的路径,确认加入到工程中了?或者用#pragma指令的话,.a文件所在的路径包含在library path中了吗?

C#调用C/C++编译生成的dll库 1 在C#中调用C/C++的动态链接库( .dll 文件)的一般格式 using System.Runtime.InteropServuces; //这是必须引用的命名空间(添加在文件中的其他using 下) 引用原型: [DllImport("user32.dll")] public static extern ReturnType FunctionName(t... 阅读详情

相关推荐

C# 调用Dll

net平台上,调用dll文件有2种含义1、调用托管dll,即你使用。net平台开发的dll,属于托管代码2、调用非托管dll,即传统的dll,一般是C++,VB,DELPHI等等开发出来的,属于非托管代码。从你的意思中看出来你现在是调用托管的dll,方法是 “在解决方案管理器” - “解决方案”(或项目) 中的任意地方, 右键“添加引用”,“浏览”,选择你需要调用的dll文件...

weixin_34358092的博客 2253

C#分享辅助类:动态调用C++DLL(DynamicCallHandler)

【代码】C#分享辅助类:动态调用C++DLL(DynamicCallHandler)

lyp1215的专栏 425

c++builder调用VC的dll以及VC调用c++builder的dll

解析__cdecl,__fastcall, __stdcall 的不同: 在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 -----------------------------------------...

技术联盟 1899

C++Builder及VC的DLL相互调用解决方案

C++Builder及VC的DLL相互调用解决方案 由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实际带来了很多的麻烦。下面来说一说如何解决这个问题。 VC生成DLL,C++Builder调用 1、用extern "C"修饰VC导出的DLL函数。如:extern "C" __declspec(dllexport) int a...

huang714的专栏 951

VC调用 C++Builder制作的DLL

C++Builder6.0制作的DLL //VC6.0调用 //C++Builder dll CPP

zhouzhangkui的专栏 597

C++Builder、C#、VC调用 C++Builder制作的DLL

刚才看见一个网友问关于 VC调用 C++Builder制作的DLL的问题半天没有人回复, 我就写了个最简单的例子//C++Builder6.0制作的DLL //VC6.0调用 //C++Builder dll CPP #include #include #pragma hdrstop //--------------------------------------------------------------------------- // Important note about

zhouzhangkui的专栏 4095

C++Builder调用VC生成的DLL方法

C++Builder调用VC生成的DLL方法 新建一个bat文件,写入下面一行。运行即可 implib -a -c XOSQL.lib XOSQL.dll 需要提供VC的动态链接库.dll,运行后生成BCB能用的.lib文件

Coperator 914

ROS入门(一)——ROS安装(vmware16+ubuntu20.04+ROS-Noetic)

嵌套:ROS可以在Ubuntu上运行,Ubuntu在虚拟机Vmware中安装。 从 虚拟机vmware安装→ubuntu安装→ros安装,逐步介绍安装ROS环境的过程。整个过程是我一步步跟着各种博客安装实现的,亲测可行。 版本: Vmware :Vmware Workstation16 Ubuntu :20.04 ROS :Noetic 其中vmware直接载当前最新版本就好,而ubuntu的版本要注意一下。 在ROS官网(cn - ROS Wiki),我们进入到ROS安装的步骤界面,可以看..

Netceor的博客 9741

C++Builder及VC的DLL相互调用示例

C++Builder及VC的DLL相互调用示例 由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实际带来了很多的麻烦。下面来说一说如何解决这个问题。  VC生成DLL,C++Builder调用 1、用extern "C"修饰VC导出的DLL函数。如:extern "C" __declspec(dllexport) int aFu

大道至简,知易行难 4463

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 395

VC创建DLL,C++BUILDER调用过程

<br /><br /><br /><br />vc创建DLL,C++BUILDER调用过程<br />其实,在实际的工作中这个事我做了N遍,可每次用完后忘得一干二净(我这人记性不好),每次想做一个DLL都得重新上网找例子,重新调试,费时费力。这次狠下决心要记下全过程:<br />一、在VC中建立一个DLL工程,名为DLLABC,其他按照默认下一步就OK了。<br /><br /><br />二、在头文件DLLABC.H中添加声明:<br />extern "C"<br />{<br />  int EXP

2152

STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

薄膜压力传感器采集压力数据

XiaoCaiDaYong的博客 3万+

C++Builder调用VC的dll以及VC调用C++Builder的dll

解析__cdecl,__fastcall, __stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 --------------------------------------------

张彤的专栏 845

Office如何通过VSTO进行WORD插件开发?

VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展Office应用程序(例如Word、Excel、PPT)。本文通过VSTO进行Word插件开发总结,并进行记录。

【cacrle】的博客 7321

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2092

C++ builder 调用VC 封装的dll组件

C++builder调用自己写的组件或者VC写的dll,还是很方便的,但是过程中会有很多细节问题,            我很负责人的想骂网上那些不不负责任,写出方法,直接粘贴别人方法的,不整理的,乱讲的,代码都有问题的童鞋们。你们真是作风不严谨,写代码不认真。。          给别人制造难度就是给自己制造难度。。           1.。。C++builder静态调用VC的dll

3154

保姆级教程:在RK3588 Android12设备树(DTS)中配置MIPI 8 Lane双通道与DSC显示

本文详细介绍了在RK3588 Android12平台上配置MIPI 8 Lane双通道与DSC显示的实战指南。通过设备树(DTS)参数详解、DSC参数计算与PPS配置、双通道同步机制实现等内容,帮助开发者高效完成高分辨率屏幕驱动配置,解决嵌入式显示系统开发中的常见挑战。

weixin_30905133的博客 399

基于FFT的轴承故障诊断 - MATLAB代码和详细解释

最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。因此,通过分析频谱图,我们可以识别轴承故障的特征。因此,通过分析频谱图,我们可以识别轴承故障的特征。我们可以选择适当的阈值,并在频谱图上标记异常特征。通过这种基于FFT的轴承故障诊断方法,我们可以快速、准确地检测和诊断轴承故障。接下来,我们将应用FFT来获取振动信号的频谱信息,频谱显示了信号在不同频率上的能量分布。通过将异常特征标记在频谱图上,我们可以直观地识别轴承故障的存在。

COWizard的博客 613

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++Builder及VC的DLL相互调用[转自csdn论坛]

 常在江湖飘,少不了要和DLL打交道。有时我们需要使用C++Builder编写一个DLL,然后拿到VC中用(比如用C++Builder写一个窗体封装到DLL);有时又要拿VC编写的DLL在C++Builder使用(比如拿到一个产品的开发包,这个包是一堆用VC写的DLL)。 很遗憾,由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实

zhoubl668的专栏:远帆,梦之帆! 1842

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: [转](转载)vs2008debug版找不到mfc90d.dll
下一篇: JSON真的比XML好很多吗?
chenbindsg
博客等级 码龄18年 6粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值