欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C++】PEXOPRTS 不工作了

程序员文章站 2022-05-25 17:02:38
...
迁移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。

下一步可以增加修改修饰名的功能

@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模块。
【C++】PEXOPRTS 不工作了 
            
    
    博客分类: Gallery 工作CC++C#VC++ 
  • 【C++】PEXOPRTS 不工作了 
            
    
    博客分类: Gallery 工作CC++C#VC++ 
  • 大小: 60 KB