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。

保姆级教学:从0搭建微信小程序SpringBoot+Vue(一)

目标:实现一个微信小程序从后端数据库MySQL获取的商品展示页。 框架:后端采用SpringBoot,前端采用Vue,数据库MySQL。 部署工具:IntelliJ IDEA 2024.2专业版+HbuilderX+Node+微信开发者工具,jdk1.8已安装

weixin_44545610的博客 4926

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

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

zuishikonghuan的博客 1万+

深交所 vs 上交所:Level-2实时数据推送规则详解与策略适配指南

本文深度解析沪深Level-2实时数据推送规则的关键差异,包括逐笔成交、逐笔委托和10档行情接口的处理逻辑。针对高频交易策略,详细对比上交所与深交所在数据推送机制、时间戳处理及委托队列解析等方面的差异,并提供具体的策略适配方案和性能优化建议,帮助量化投资者提升跨市场交易稳定性。

weixin_27310417的博客 1165

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

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

机器学习ROC曲线中的阈值thresholds

在ROC曲线上的不同点对应于不同的阈值。根据任务的具体要求,可以选择合适的阈值,以达到平衡召回率和误报率,或者根据具体应用场景调整模型的工作点。,表示样本属于正例的概率。这个概率值可以被截断为二元分类的决策,通过选择一个阈值来决定样本是被分类为正例还是负例。通过改变阈值,可以得到不同的真正例率(TPR)和假正例率(FPR),从而绘制出ROC曲线。总体来说,ROC曲线提供了模型在不同阈值下的性能综合情况,帮助分析模型的分类能力。通常来说,随着阈值的增加,TPR会减小,而FPR会增加。ROC曲线的绘制涉及。

行子的博客 3655

[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

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 523

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

Python之abbrobotegm包语法、参数和实际应用案例

`abbrobotegm` 是用于控制 ABB 机器人的 Python 接口包,主要通过 EGM(Externally Guided Motion,外部引导运动)协议与 ABB 机器人控制器进行通信,实现对机器人的实时位置控制、状态监控和运动引导等功能。该包适用于需要将 ABB 机器人与外部系统(如视觉系统、传感器等)集成的场景。

王国平的博客 1255

Milvus 向量数据库部署方案全景指南:从单机开发到生产级高可用集群

本文系统介绍了Milvus向量数据库的四大部署方案:嵌入式开发利器Milvus Lite、单机简易部署Standalone模式、生产级高可用Cluster模式以及全托管SaaS服务Zilliz Cloud。针对不同应用场景(开发测试、小型应用、大规模生产环境),详细分析了各模式的适用条件、资源配置要求和部署步骤,并提供了关键配置示例。文章强调正确选择部署方案对系统性能至关重要,帮助开发者根据向量规模、QPS和高可用需求,选择最优部署方式,实现资源优化与稳定运行。

reset2021的博客 385

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

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 729

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

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

weixin_33730836的博客 381

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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、付费专栏及课程。

余额充值