采用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默认安装里都没有
在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,重新链接即可.
分享到:
相关推荐
### mingw调用MSVC编译的dll 在软件开发过程中,经常会出现不同编译环境下的库文件(如DLL)需要被另一个环境调用的情况。本文将详细介绍如何在MinGW环境中调用由Microsoft Visual C++ (MSVC) 编译器生成的DLL。 #...
MingW VC 之.a .lib .dll .def 关系主要涉及的是在Windows环境下,使用Microsoft Visual C++ (MSVC) 和 MinGW 工具链编译C或C++程序时,不同类型的文件及其相互关系。这里主要讲解的是库文件、动态链接库(DLL)、导...
标题"libevent-2.0.22-stable在windows环境下使用mingw编译"指的是一个关于使用MinGW编译工具在Windows操作系统上构建libevent库的2.0.22稳定版本的过程。libevent是一个开源的、跨平台的事件通知库,它提供了一种...
总的来说,从DLL转换为MinGW下的.a文件涉及对Windows动态链接库的理解、使用`pexports`和`dlltool`工具,以及对编译链接过程的掌握。通过这个过程,你可以确保程序在运行时不再依赖外部的DLL,使得部署更加简单。
使用 mingw 编译出 sqlite3.dll 和 sqlite3.exe 2. lsqlite3 (也是本压缩包的原型) http://lua.sqlite.org 从下面网址下载 Version 0.8 http://lua.sqlite.org/index.cgi/zip/lsqlite3_svn08.zip?uuid=svn_8 ...
对于那些习惯使用Visual Studio (VS) 或其他IDE的人来说,本文提供了一种不同于主流编译方式的新途径—使用mingw进行编译。这对于习惯使用QtCreator等基于mingw的开发环境的开发者来说尤为重要。 #### libjpeg插件...
标题中的“使用mingw编译后的tiff安装包”指的是使用MinGW(Minimalist GNU for Windows)工具链编译的TIFF库的安装包。MinGW是一个为Windows平台提供开源GCC(GNU Compiler Collection)编译器的项目,使得开发者...
在 MingW 编译环境下,这个库是专门为使用MinGW工具链(一个在Windows上模拟GCC编译环境的工具集)的开发者准备的。MingW允许开发者使用熟悉的GCC编译器来构建和调试Windows应用程序,而无需使用Microsoft Visual ...
MingW,全称为 Minimalist GNU for Windows,是一个开源的开发环境,它允许用户在Windows操作系统上使用GNU工具链进行C、C++等编程语言的编译。当在使用MingW时遇到“缺少的DLL文件”问题,通常是因为系统缺乏某些...
然而,需要注意的是,静态编译可能会增加程序的启动时间,且由于LGPL协议,如果商业软件使用了静态编译的Qt,可能需要开源其与Qt相关的源代码。因此,在选择编译方式时,应权衡利弊,根据项目需求进行决策。
3. 配置编译选项:进入OpenSSL源码目录,使用`Configure`脚本来配置编译选项,指定MinGW的交叉编译环境。例如: ``` configure --prefix=/path/to/install/directory --target=i686-w64-mingw32 --static ``` ...
这里提到使用MinGW编译libusb源码,这意味着用户不需要自己配置编译环境,可以直接利用编译好的库文件进行开发。"生成了windows下vs可用的lib和dll"进一步强调了这些库文件可以无缝集成到Visual Studio项目中,使得...
本压缩包包含的是使用MinGW(Minimalist GNU for Windows)4.9.2版本编译后的Zlib 1.2.5安装包,适用于Windows环境。 MinGW是GCC(GNU Compiler Collection)在Windows上的一个移植版本,它提供了与Linux环境下类似...
在本文中,我们将深入探讨如何在Windows环境下使用Qt与MinGW编译Point Cloud Library (PCL) 及其依赖库,包括boost、eigen、flann、qhull和VTK。这一过程对于开发者来说至关重要,因为能够确保在Qt环境中直接运行PCL...
本指南将详细介绍如何利用MinGW(Minimalist GNU for Windows)和Code::Blocks集成开发环境(IDE)在Windows上编译和使用wxWidgets库。 ### 1. wxWidgets简介 **1.1 wxWidgets版本** wxWidgets库有多个版本,每个...
内容概要: 1. python通过ctypes调用C DLL库,传递结构体,保存信息 2. 解析xls表格数据,调用C接口,将信息写入到文件 3. mingw编译C DLL库用例 适用人群:python+C程序员 使用场景及目标:开发 其它说明:无
标题中的“cryptopp840 Windows mingw 编译可用”指的是一个关于Cryptopp库的特定版本840,在Windows操作系统环境下,使用MinGW编译器成功编译并可供使用的资源。Cryptopp是一个C++类库,提供了各种加密算法和密码学...
标题提及的是“QTMinGW下已经编译好的gdal库”,这意味着我们无需从源代码编译GDAL,而是可以直接使用预编译的库文件,这极大地简化了开发流程。MinGW(Minimalist GNU for Windows)是GCC(GNU Compiler Collection...
** MingW 编译环境与libxml2-2.7.7** MingW(Minimalist GNU for Windows)是一款在Windows环境下使用的开源GCC(GNU Compiler Collection)编译工具链,它使得开发者能够在Windows上使用类似GNU开发环境的命令行...
《libiconv1.14 Mingw编译与应用详解》 libiconv是一个广泛使用的字符集转换库,它的主要任务是将数据从一种字符编码转换到另一种编码。在这个名为"libiconv1.14 mingw编译出来的安装包"的压缩文件中,包含了...