【C++】PEXOPRTS 不工作了
程序员文章站
2022-05-25 16:25:57
...
迁移Posix下的一些工具常常需要用到MingW和VC++一起工作,这时候PEXPORTS就帮上大忙了:我们可以先用MinGW编译出dll,然后用PEXPORTS导出def文件,最后用VC++的LIB命令创建新的lib文件,VC++程序就可以无缝地调用MingW的dll。
迁移到win7 64bit之后,原来的PEXPORTS 0.4.3总是会莫名其秒Crash掉,打上补丁也没效果,将它编译成64bit也照样出错,求人不如求自己,写了一个简单的dos batch,就来代替原来的PEXOPRTS。
下一步可以增加修改修饰名的功能
这下就简单多了,使用的时候可以只要def文件 :
也可以直接创建最后的import library
图中用VC++编译libarchive里,就调用了mingw64编译的xz模块。
迁移到win7 64bit之后,原来的PEXPORTS 0.4.3总是会莫名其秒Crash掉,打上补丁也没效果,将它编译成64bit也照样出错,求人不如求自己,写了一个简单的dos batch,就来代替原来的PEXOPRTS。
下一步可以增加修改修饰名的功能
@echo off if "%1"=="" goto :USAGE :CHECK where dumpbin.exe >nul if %ERRORLEVEL% EQU 1 goto :FAILURE_1 dumpbin.exe /EXPORTS %1 > tmp 2>nul echo LIBRARY %~n1 >%~n1.def echo. >>%~n1.def echo EXPORTS >> %~n1.def SET no=1 SETLOCAL ENABLEDELAYEDEXPANSION for /F "skip=19 tokens=3*" %%i in (tmp) do ( echo %%j @!no! >>%~n1.def SET /A no=!no!+1 ) endlocal if "%2"=="" goto :END where lib.exe >nul if %ERRORLEVEL% EQU 1 goto :FAILURE_2 lib /def:%~n1.def /machine:%2 goto :END :USAGE echo pexport <dll file> [x86|x64] echo create import library from Dll --- Ray Linn goto :END :FAILURE_1 echo Can not find the dumpbin.exe in your path. goto :END :FAILURE_2 echo Can not find the lib.exe in your path. goto :END :END del tmp
这下就简单多了,使用的时候可以只要def文件 :
pexport xxx.dll
也可以直接创建最后的import library
pexport xxx.dll x64
图中用VC++编译libarchive里,就调用了mingw64编译的xz模块。