我用bcb开发,厂家给了个dll,我用def导出,如下
??0CSgipapi@@QAE@XZ @1 ; ??0CSgipapi@@QAE@XZ
??4CSgipapi@@QAEAAV0@ABV0@@Z @2 ; ??4CSgipapi@@QAEAAV0@ABV0@@Z
?SGIP_Connect@@YAHPADF00@Z @3 ; ?SGIP_Connect@@YAHPADF00@Z
?SGIP_Disconnect@@YAHH@Z @4 ; ?SGIP_Disconnect@@YAHH@Z
?SGIP_Get_MO@@YAHHPAPAX@Z @5 ; ?SGIP_Get_MO@@YAHHPAPAX@Z
我用bcb不能正确导入,有人说这只能用vc开发对吗?
??0CSgipapi@@QAE@XZ @1 ; ??0CSgipapi@@QAE@XZ
??4CSgipapi@@QAEAAV0@ABV0@@Z @2 ; ??4CSgipapi@@QAEAAV0@ABV0@@Z
?SGIP_Connect@@YAHPADF00@Z @3 ; ?SGIP_Connect@@YAHPADF00@Z
?SGIP_Disconnect@@YAHH@Z @4 ; ?SGIP_Disconnect@@YAHH@Z
?SGIP_Get_MO@@YAHHPAPAX@Z @5 ; ?SGIP_Get_MO@@YAHHPAPAX@Z
我用bcb不能正确导入,有人说这只能用vc开发对吗?
作 者: Behard (想象休息中......这个星期去踢球)
等 级:
信 誉 值: 100
所属论坛: VC/MFC 进程/线程/DLL
问题点数: 100
回复次数: 6
发表时间: 2003-3-6 10:10:38
Borland C++ Builder Load VC 的 Dll 时:
使用动态连接没有问题,静态只有 __stdcall 方式能成功
而 __fastcall 和 __cdecl 方式不成功,我看到有书说是可以使用 Def 文件来导入(也就是使用别名)
但是没有例子,谁有这些方面的例子
VC 方面的例子也可以
我的 Email:Behard#163.net
回复人: lwg7603(刑满释放人员) ( ) 信誉:100 2003-3-6 10:13:52 得分:0
没用,__stdcall才是正常的方式~
回复人: Behard(想象休息中......这个星期去踢球) ( ) 信誉:100 2003-3-6 10:16:03 得分:0 但是我使用动态连接没有问题哟
回复人: force_eagle(战鹰) ( ) 信誉:100 2003-3-7 10:04:31 得分:0
使用BORLAND的impdef和implib可以作到啊!!!
http://www.csdn.net/Develop/read_article.asp?id=15689
回复人: force_eagle(战鹰) ( ) 信誉:100 2003-03-21 10:00:00 得分:0
如果是FASTCALLL的话
先使用IMPDEF 从DLL中导出DEF文件,然后手工修改,将fastcall后面的@nn去掉,改为符合CB调用的@functionname形式
如果是cdecl的
在DEF中将函数名称前加一"_",改为符合CB调用的_function形式两函数
extern "C" __declspec(dllexport) int __cdecl GetCStyle(int nIndex)
{
nIndex = 1;
return nIndex;
}
extern "C" __declspec(dllexport) int __stdcall GetStdCallStyle(int nIndex)
{
nIndex = 2;
return nIndex ;
}
VC编译
CL /LD xx.cpp
如下
LIBRARY DLLEXPORTSTYLE.DLLEXPORTS
@GetFastCalStyle@4 @1 ; GetFastCalStyle:: (huge, rtti)
GetCStyle @2 ; GetCStyle改为
LIBRARY DLLEXPORTSTYLE.DLLEXPORTS
@GetFastCalStyle @1 ; GetFastCalStyle:: (huge, rtti)
_GetCStyle @2 ; GetCStyle
不知道现在这样能不能在bcb里用?