cygwin下调用vc的dll库

cygwin下调用vc的dll库

ID:8807678

大小:26.50 KB

页数:2页

时间:2018-04-08

cygwin下调用vc的dll库_第1页
cygwin下调用vc的dll库_第2页
资源描述:

《cygwin下调用vc的dll库》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Cygwin的gcc编译器使用windows的dll文件一般的步骤是使用pexports或dumpbin程序导出dll的DEF文件其中dumpbin导出的DEF文件需要手动修改,所以推荐使用pexports,做法如下:pexportslibFedTimed.dll>libFedTimed.defdlltool-DlibFedTimed.dll-dlibFedTimed.def-llibFedTimed.a-k如果该dll是C的函数库,如libmysql.dll或者kernel32.dll类的DLL,这样做就一点问题没有,直接使用。但是如果是

2、VC6、VC7生成的C++库则存在C/C++轧名规则(namemangling)问题,参见如下表Compilervoidh(int)voidh(int,char)voidh(void)GNUGCC3.x_Z1hi_Z1hic_Z1hvGNUGCC2.9xh__Fih__Fich__FvIntelC++8.0forLinux_Z1hi_Z1hic_Z1hvMicrosoftVC++v6/v7?h@@YAXH@Z?h@@YAXHD@Z?h@@YAXXZBorlandC++v3.1@h$qi@h$qizc@h$qvOpenVMSC++V6.5(A

3、RMmode)H__XIH__XICH__XVOpenVMSC++V6.5(ANSImode)CXX$__7H__FI0ARG51TCXX$__7H__FIC26CDH77CXX$__7H__FV2CB06E8OpenVMSC++X7.1IA-64CXX$_Z1HI2DSQ26ACXX$_Z1HIC2NP3LI4CXX$_Z1HV0BCA19VDigitalMarsC++?h@@YAXH@Z?h@@YAXHD@Z?h@@YAXXZSunProCC__1cBh6Fi_v___1cBh6Fic_v___1cBh6F_v_HPaC++A.05.5

4、5IA-64_Z1hi_Z1hic_Z1hvHPaC++A.03.45PA-RISCh__Fih__Fich__FvTru64C++V6.5(ARMmode)h__Xih__Xich__XvTru64C++V6.5(ANSImode)__7h__Fi__7h__Fic__7h__Fv不同编译器生成的导出名称不同,所以在使用Cygwin的gcc编译器链接libFedTimed.a时会出现 undefinedreferenceto`RTI::FedTimeFactory::makeZero()'tstDMSORtiHelloWorld.cppl

5、ine44212253847330785683错误因为gcc编译对RTIfedTime::getTime()翻译为:_ZN3RTI14FedTimeFactory8makeZeroEv而DMSO RTI的libFedTimed.dll提供的是:?makeZero@FedTimeFactory@RTI通过自己的摸索,可以修改libFedTimed.def文件中的导出函数声明为:_ZN3RTI14FedTimeFactory8makeZeroEv=?makeZero@FedTimeFactory@RTI再使用dlltool-DlibFedTim

6、ed.dll-dlibFedTimed.def-llibFedTimed.a-k生成的.a文件就可以使用了。这里还有一个小技巧:先将你的源程序编译出来的.o文件使用nm-sCountry.o>fungcc3.txt得到针对函数的gcc命名_ZN3RTI14FedTimeFactory8makeZeroEv,但是它不容易分辨出来,再使用c++filt提出可阅读的的函数调用名称catfungcc3.txt

7、c++filt>fungcc3read.txt针对VC生成的.def文件,同样可以使用undname恢复函数名称undnamelibFedT

8、imed.def>funvcread.txt然后对照fungcc3.txt、fungcc3read.txt、libFedTimed.def、funvcread.txt就可以完成轧名规则的变换。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。