mingw如何使用VC编译的dll

[X264] MinGW编译x264,VC中调用libx264.dll 1. 下载并按照MinGW,最好就缺省按照     http://sourceforge.net/projects/ ... ler/mingw-get-inst/     把C:\MinGW\bin添加到PATH中 (dos命令行 PATH %PATH%;新目录;) 2. 下载Yasm,     http://yasm.tortall.net/Download.html     阅读详情

什么也不说了,看例子
采用ming C编译,将ming/bin加入path
(注:pythonxx.dll一般在winnt/system32下,以下操作后文件如xx.def,xx.a放到python/libs下)

1)pexports python24.dll >python24.def

2)dlltool --dllname python24.dll --def python24.def --output-lib libpython24.a

使用sqlite3,只有.dll和.def文件,为了直接用它,需要一个lib文件,使用以下命令行好了:) lib /def:xx.def /out:xx.lib lib是vc++带的工具. 下面是ms 官方的连接: http://support.microsoft.com/kb/q131313/

pexports 这个工具似乎在vc和mingw默认安装里都没有

所以又找了一篇文档来解决导出 def文件的问题

为无LIB的DLL制作LIB函数符号输入库
作者:force_eagle

本文介绍了在VC中针对无LIB时的DLL隐式链接,制作可供VC++使用的LIB函数符号输入库。具体步骤如下:

一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件
EXAMPLE:

DUMPBIN VideoDeCoder.dll /EXPORTS /OUT:VideoDeCoder.def

二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件
EXAMPLE:VideoDeCoder.DEF 文件内容如下

Dump of file VideoDeCoder.dll                                  
                                                                       
        File Type: DLL                                                 
                                                                       
          Section contains the following exports for VideoDeCoder.dll  
                                                                       
                   0 characteristics                                   
            3D49E48F time date stamp Fri Aug 02 09:46:55 2002          
                0.00 version                                           
                   1 ordinal base                                      
                  11 number of functions                               
                  11 number of names                                   
                                                                       
            ordinal hint RVA      name                                 
                                                                       
                  1    0 00010F60 _TM_ClearDecoderBuff@4               
                  2    1 00010E80 _TM_CloseDecoder@4                   
                  3    2 00010F00 _TM_DecodePicture@4                  
                  4    3 00010ED0 _TM_DecodePictureHeader@4            
                  5    4 00010FD0 _TM_GetFileEnd@4                     
                  6    5 00011030 _TM_GetUValue@4                      
                  7    6 00011060 _TM_GetVValue@4                      
                  8    7 00011000 _TM_GetYValue@4                      
                  9    8 00010E10 _TM_OpenDecoder@8                    
                 10    9 00010F30 _TM_ReturnType@4                     
                 11    A 00010F90 _TM_SetFileEnd@8                     
                                                                       
          Summary                                                      
                                                                       
                2000 .data                                             
                1000 .rdata                                            
                1000 .reloc                                            
               15000 .text

按照以下方法整理:
1)添加LIB说明

LIBRARY "VideoDeCoder"            ;"xx"为DLL名称
DESCRIPTION "VideoDeCoder library"

2)去掉导出函数说明端以外的内容,在LIB说明下添加 "EXPROTS" 说明导出函数

LIBRARY "VideoDeCoder"
DESCRIPTION "VideoDeCoder library"

EXPORTS
            ordinal hint RVA      name                          
                                                                
                  1    0 00010F60 _TM_ClearDecoderBuff@4            
                  2    1 00010E80 _TM_CloseDecoder@4            
                  3    2 00010F00 _TM_DecodePicture@            
                  4    3 00010ED0 _TM_DecodePictureH            
                  5    4 00010FD0 _TM_GetFileEnd@4              
                  6    5 00011030 _TM_GetUValue@4               
                  7    6 00011060 _TM_GetVValue@4               
                  8    7 00011000 _TM_GetYValue@4               
                  9    8 00010E10 _TM_OpenDecoder@8             
                 10    9 00010F30 _TM_ReturnType@4              
                 11    A 00010F90 _TM_SetFileEnd@8

3)将所有的函数放至行首,去掉 "hint" 和 "RVA" 数据,留下函数的序号 "ordinal" ,在序号前加上 "@" 符号 形成 "_导出函数名@参数字节和 @序号" 此种格式(__stdcall 方式调用导出的函数符号是 "函数名称@参数字节和"). 最后形成.DEF文件如下:

LIBRARY "VideoDeCoder"
  DESCRIPTION "VideoDeCoder library"

  EXPORTS
      
  TM_ClearDecoderBuff@4             @1    
  TM_CloseDecoder@4                 @2    
  TM_DecodePicture@4                @3    
  TM_DecodePictureHeader@4          @4    
  TM_GetFileEnd@4                   @5    
  TM_GetUValue@4                    @6    
  TM_GetVValue@4                    @7    
  TM_GetYValue@4                    @8    
  TM_OpenDecoder@8                  @9    
  TM_ReturnType@4                  @10    
  TM_SetFileEnd@8                  @11

三、使用VC++的LIB工具,带/DEF:(.def文件名) /MACHINE:IX86(80X86机器),就输出符合VC++格式的的LIB文件了.
EXAMPLE:

LIB /DEF:VideoDeCoder.def /MACHINE:IX86

四、接时带上LIB文件链接;注意的是当有些动态库DUMPBIN的只有函数名,无"@nn"的参数格式,如C++Builder写的DLL,输出就只有函数名符号,链接时就会报错: error LNK2002:unresolved external symbol "functionname@nn" 提示程序中引入的函数符号无法识别,这时只要将DEF文件中相应的函数名称改为functionname@nn方式,重新建立 LIB,重新链接即可.


如何在windowsxp环境下编译pcre7.1(mingw) 因为要用其他的软件,不得不编译pcre7.1,用vc8.好在pcre的帮助文档写得不错,告诉你可以用mingw去编译成Dll,然后在VC下使用(当然,也可以用cygwin,不过对于我可怜的机器来讲,实在不愿意再装大的package了)。下面是步骤:1. 下载mingw, mingw-utils和msys    时间主要花在找这些包上面了:mingw: http://downloads.source 阅读详情

相关推荐

细说MSVC和MinGW生成库的差异及如何相互调用

两个编译器的C++ ABI是不兼容的所以无法识别对方导出的符号完成链接,但是可以用C语言进行中转,C的ABI在所有编译器中都是相同的,也就是说把VC动态库所有导出接口都改为 extern “C” 形式即可,这样生成的动态库,MinGW和MSVC都可以相互链接。由于MSVC生成的静态库和MinGW生成的静态库ABI(Application Binary Interface)无法兼容、使用的标准库也不同(MinGW使用的GNU标准库、MSVC使用的微软标准库),所以两个编译器生成的静态不可以跨编译器相互调用;

yang1fei2的博客 3346

MSVC和MinGW导出的.dll.a和.lib相互调用

MSVC和MinGW导出的.dll.a和.lib相互调用

itas109的专栏 4192

VC 调用 MinGW 生成的dll(未测试)

首先,如果dll 中导出了C++的类,那么就不要折腾了。不同的编译器编译出来的C++代码是不保证通用的。如果dll中只是一些C 函数,那么是可以互相调用的。 MinGW 生成dll时即使生成了 .a 文件也是不能用到VC 上的(至少我用的VC2010版本是不行了,表现为生成的程序 Debug模式下可以运行,但是Release 模式下却无法运行)。 如果生成dll时也生成的def文件那么可以这样: 比如我的dll 文件叫做 test.dll ,对应的def文件为 test.def 执行下面这条语句: LIB

我不是码农的博客~~~ 1073

6.Qt+Mingw调用MSVC生成的库文件

假设函数名为"myFunctionName",此处为Cadd,与Dll中同名。编译的,或者在构建库时采用兼容的编译选项。1)Qt新建一个C++lib库,选择MSvc格式。编译你的应用程序,你需要确保你使用的库是专门为。皇天不负有心人,经过多方尝试,总算找到一个能用。声明函数指针类型,与DLL中导出的函数原型匹配。2)新建一点击按钮函数,对函数进行调用,如下。生成的库文件不兼容。,并重新构建代码,后运行,弹窗忽略。生成的库文件链接,反之亦然。我参考了好几篇博客都是只能。,交叉调用一直报错,例如。

wuwuwu526654的博客 2576

mingw调用MSVC编译的dll

如何在mingw中调用MSVC环境下编译的dll。

GPT Researcher 的win docker安装攻略

github网址是:https://github.com/assafelovic/gpt-researcher/blob/master/README-zh_CN.md。使用 Docker 运行 AI-Researcher 项目的。因为docker安装方法不够清晰,因此写一个使用方法。打开设置——docker engine ,增加代码。如有其他问题,可提供错误截图或日志进一步排查!

weixin_43818488的博客 1125

MinGW 与 MSVC 生成 DLL 各种情况的折腾笔记

写这篇博客,主要是刚折腾 MinGW,相关内容网上的资料不全,而且错误很多 其实之前我根本没把这个当回事,我就想 MinGW 跟 Linux 上的 GNU 编译器不会有差别,但是事实却不是这样。。。 提示:所有代码均使用 __stdcall 安装 MSVC 和 MinGW MSVC:安装 Visual Studio,之后即可在开始菜单中找到“Visual Studio开发人员命令提示”,启

zuishikonghuan的博客 1万+

MTK Sensor驱动调试实战:从AP到SCP的完整流程解析

本文详细解析了MTK平台Sensor驱动从AP侧到SCP侧的完整调试流程。内容涵盖AP侧驱动集成、DTS配置、内核编译与验证,以及SCP侧Tinysys框架下的代码集成、Overlay配置与I2C设置等核心步骤,并分享了中断唤醒、功耗优化及传感器数据校准等实战经验与常见问题排查方法,为硬件驱动工程师提供了一份全面的实战指南。

weixin_29175469的博客 354

MinGW如何使用VC编译的DLL??

MSVC and MinGW DLLshttp://www.mingw.org/wiki/MSVC_and_MinGW_DLLs MSVC和MinGW的DLL工具http://www.cppprog.com/2009/0918/163.html(中文翻译的)(原文http://wyw.dcweb.cn/stdcall.htm)MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe) 玩转攻略手记http://hi.baidu.com/kaien

davyxie的专栏 4750

UE4_UE5 自定义简单水材质(UE材质图表大全1)

首先是材质的颜色节点、粗糙度节点、透明度节点。(1/2/3/4键+右键空白处,可创建一/二/三/四维节点)接着是两个法线波动节点的叠加。最后是折射节点,将fresnel菲涅尔节点连接到材质结果节点的折射输入端。到这里,你基本已经实现了一个波纹流动的水材质。后续我会更新加上海面浪花的水面材质,可以到我的专栏中寻找。有问题随时私信沟通,加油❤。

shanlinhan的博客 1985

[Mingw与VC++互操作] MingW使用VC编译的dll

采用ming C编译,将ming/bin加入path (注:pythonxx.dll一般在winnt/system32下,以下操作后文件如xx.def,xx.a放到python/libs下) 1)pexports python24.dll >python24.def 2)dlltool --dllname python24.dll --def python24.def --outpu...

raylinn的博客 741

FPGA实现电机转速PID控制

通过纯RTL实现电机转速PID控制,包括电机编码器值读取,电机速度、正反转控制,PID算法,卡尔曼滤波,最终实现对电机速度进行控制,使其能够渐近设定的编码器目标值。

STATEABC的博客 7506

vc写的dll被mingw的g++编译引用

dll.cpp,用vc2017编译 #include <iostream>#include <windows.h> extern "C" __declspec(dllexport) void Go() {   std::cout << "go" << std::endl;} BOOL APIENTRY DllMain( HMODULE hMod...

weixin_34032621的博客 317

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 895

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 603

C++ | Qt编译DLL

Qt 中有两种编译方式: 1、MSVC(Microsoft Visual C++ Compiler)是指微软的VC编译器 2、MinGW(Minimalist GNU on Windows)是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集,允许在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。 Qt使用两种方式编译dll时,有以下区别:

该用户还没想到好的昵称的博客 1126

微信小程序 - {“errMsg”:”requestPayment:fail banned”} 微信小程序调用wx.requestPayment支付失败返回错误(uniapp微信小程序微信支付报错)

{“errMsg”:”requestPayment:fail banned”},微信小程序调用wx.requestPayment报错requestPayment:fail banned,uni-app微信小程序wx.requestPayment支付报错requestPayment:fail banned,拉起小程序支付报错,iPhone苹果ios真机微信支付报错,Android安卓手机微信支付报错,支付报错,商户配置,签名验证,uniapp 小程序支付微信支付一场,设置过b2b类目,确认了商户号相关功能正常

🏆 前端领域优质创作者 3347

Mingw & VC -- DLL

Mingw 生成dll   gcc test.c -shared -o libtest.dll -Wl,--output-def,libtest.def,--out-implib,libtest.a   同时生成了 a.def liba.a   VC (VC6.0)生成dll   File->New->Win32 Dynamic-Link Library … 添

xiaocai_36 1441

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MinGW 使用 msvcr90.dll

MinGW 编译出来的程序总是使用 VC6 的 msvcrt.dll ,VC8,9,10有很多新的API(仅限于c runtime),想使用怎么办? 比如:boost 对 MinGW 最低要求就是 msvcrt 7.0 1.MinGW 系统默认情况 MinGW 根据宏 MSVCRT_VERSION 来选择 msvcr 版本,如果用户未指定则默认使用 VC7 的 API(bug, Min...

weixin_30216561的博客 303

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用VC和MinGW导出dll的def和lib(a)文件

为什么80%的码农都做不了架构师?>>> ...

weixin_33730836的博客 381

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

FFmepg - 编译

FFmpeg的官网 http://ffmpeg.org 想要得到FFmpeg在Windows下可用的dll,需要使用MinGW + MSYS,VC2008的编译环境。总体上编译会很顺利,下面详细介绍其步骤。 1.下载MinGW 到sourceforge.net上下载MinGW,下载mingw-get-inst-20110802.exe类似这样的东西,这是一个在线安装包。 打开后,会自动下...

阿发你好 2326

mingw dll msvc

1. linux 和 windows 对动态库的编译连接方式不同 linux: 编译时直接去连接动态库 windows: 编译时不是连接动态库,而是连接.LIB文件,而这个.LIB文件其实只是从动态库中导出的符号表                (个人感觉windows真是多此一举,既然动态库中什么信息都有,为什么不直接连接动态库呢)   2. 跨平台编译器: min

coder 1072

成功使用mingw32和vc2005编译boost.python (v1.39)

前些天下载了boost的源码并且使用mingw32和vc2005成功编译了boost.python,有需要的朋友可下载这些dll! 转载于:https://www.cnblogs.com/flysun/archive/2009/11/18/1605671.html...

weixin_30691871的博客 98

mingw 编译可供 vc 连接库的Makefile. dumpbin 产生 def,进而产生lib

使用 mingw 编译一个ffmpeg 库,想使用自己的内存分配函数,需要在 configure 里指定 --malloc-prefix= , 然后增加 --extra-ldflags= 把你自己的内存函数库指出来。 在编译完自己的内存库给ffmpeg 调用之后,这些内存库函数有可能还要被vc里的源文件调用,所以要编译一个可供vc调用的库。 下面就是这个目的地makefile。   直接上

brooknew的专栏 2491
上一篇: Problem B: Minesweeper
下一篇: VC--用DLL生成LIB文件
hellosijian
博客等级 码龄16年 35粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值