dll导出lib

vc++使用
  分两个步骤
  1.使用pexports或是微软自带的dumpbin导出dll的def文件,推荐使用pexports,可以直接导出不需要修改的def文件.
            用法例子: pexports.exe libintl-8.dll > libintl-8.def 
  
  2.使用vc自带的lib程序,调用LIB /DEF:libintl-8.def /MACHINE:IX86即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe) 玩转攻略手记 一份粗糙的研究记录,有待补完和整理。 MinGW: c -> o gcc -c a.c c -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe) o -> exe gcc a.o b.o ... -o main.exe c -> dll,def,a gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba.a a -> dll a2dll liba.a dll -> a: dlltool --dllname a.dll --def a.def --output-lib liba.a (需要def文件) a -> def: dumpbin /exports lib.a > lib.def (在windows上调用,def需要修改) dll -> def : pexports a.dll -o > a.def (这里的-o是指给函数标序号) lib -> def : reimp -d a.lib lib -> a: (for __cdecl functions in most case) reimp a.lib; (for __stdcall functions) MSVC: c -> lib cl /LD a.c (注意已经定义了export列表) c -> dll cl /LD a.c c -> obj cl /c a.c c -> exe cl a.c /out:a.exe dll ->lib lib /machine:ix86 /def:a.def /out:a.lib (需要def文件) obj ->lib lib a.obj b.obj... /out:mylib.lib dll ->def DUMPBIN a.dll /EXPORTS /OUT:a.def (生成的def需要做修正) lib ->def reimp -d a.lib (这个要在MSYS+MinGW下用) 关于这些工具的适用范围可以很容易的理解和记忆。 dll和exe都是PE文件,所以可以使用pexports. lib和a是静态库文件,都是归档类型,不是PE格式。所以不能使用pexports. dll可以使用dlltool. lib可以使用lib, 和reimp(lib->a工具) 所有的bin文件,包括dll,exe,lib,a都可以使用dumpbin. 参考: http://hi.baidu.com/kaien_space/blog/item/5e77fafa2ba9ff16a8d3110a.html Mingw官网文档: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs http://oldwiki.mingw.org/index.php/CreateImportLibraries http://www.mingw.org/wiki/FAQ http://hi.baidu.com/opaquefog/blog/item/9b21b6deb324e25dccbf1ab7.html http://qzone.qq.com/blog/8330936-1238659272 http://hi.baidu.com/jzinfo/blog/item/b0aa1d308de99f9da8018e00.html 本篇测试用代码: 1. main.cpp #include #include #include "mylib.h" using namespace std; int main() { char str[]="Hello world!"; printhello(str); return 0; } 2. mylib.cpp #include #include #include "mylib.h" using namespace std; void EXPORT printhello(char *str) { cout << str << endl; } 3. mylib.h #define EXPORT __declspec(
### 回答1: makeexport dll导出lib是一个非常常见的操作。一般来说,这是因为我们需要将一个动态链接库中的函数导出到一个静态链接库中,以供其他代码使用。这个过程需要使用一些工具,主要有两个,分别是makeexports和lib。 首先,我们需要使用makeexports工具来生成一个.def文件,该文件列出了我们想要导出的函数和它们在库中的名称。然后,我们可以使用lib工具将这些导出函数生成为一个静态链接库。这个过程确保了我们可以使用这些函数而不需要动态加载它们。 makeexports工具和lib工具都是微软Visual Studio开发环境自带的工具,可以在命令行中使用。如果你使用的是其他编译器或开发环境,则可以使用类似的工具来实现相同的目的。 总的来说,将动态链接库导出为静态链接库是一个重要的操作,使我们可以将函数共享给其他代码而不需要它们运行时被动态加载。 ### 回答2: makeexport是一个工具,用于从动态链接库(DLL)中导出函数。这个工具可以通过在命令行中指定DLL导出函数列表来生成一个LIB文件,这个LIB文件包含DLL导出函数的符号和地址信息,以便在链接期间使用。 如果你需要使用某个DLL中的函数,但是没有相应的头文件和LIB文件,那么你可以使用makeexport工具来生成一个LIB文件。具体操作步骤如下: 1. 下载makeexport工具; 2. 在命令行中运行makeexport,并指定需要生成LIB文件的DLL以及导出函数列表; 3. 执行完命令后,会在当前目录下生成一个LIB文件; 4. 将LIB文件添加到你的项目中,以便在链接期间使用。 需要注意的是,使用makeexport工具生成的LIB文件只包含DLL中指定的导出函数。如果你需要使用DLL中其他的函数,你需要使用其他工具或手动编写相应的头文件和LIB文件。 总的来说,使用makeexport工具来生成LIB文件可以方便地使用DLL中的函数,但是需要注意生成的LIB文件不一定包含所有函数信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值