读书人

dll调用dll的有关问题,能够LoadLibrar

发布时间: 2012-02-01 16:58:19 作者: rapoo

dll调用dll的问题,能够LoadLibrary,但GetProcAddress始终为空
我编一个dll调用另外一个dll始终有问题,代码如下:
我的dll的代码是

#define DLL_IMPORT extern "C " __declspec(dllimport)

DLL_IMPORT HANDLE open_file( char *);

typedef HANDLE (*openfile_bike)(char *);
openfile_bike _openfile_bike;
HINSTANCE LoadBikeDllFunc()
{
hInstLibraryBike = LoadLibrary( "USB11_D12.dll ");//这一步能成功
return hInstLibraryBike;
}
bool AssociateBikeFunc()
{
_openfile_bike = (openfile_bike)GetProcAddress(hInstLibraryBike, "open_file ");//这一步始终返回为空
if(_openfile_bike==NULL)
return FALSE;
else
return TRUE;
}
其中USB11_D12.dll这个dll不知道其源码,只知道他的函数声明.大家帮帮我啊,有dll调用dll的例子也成啊....再次感谢大家...

[解决办法]
找个工具看下它的导出名先...
[解决办法]
dll调dll会有这种问题?我做APIHook的时候调用过,也是用GetProcAddress取得地址,一点问题没有。LZ的问题是不是出在别处?
下面的hInstLibraryBike值传到了没有,导出函数名没有C++改过确定是open_file么?

[解决办法]
估计是函数名称写错了。你使用VC自带的depends工具查看一下。
很多时候如果不注意,导出的函数会带上_abc这样的符号。
[解决办法]
用dumpbin导出dll的export信息
[解决办法]
还要注意函数调用约定是否一致
[解决办法]
_openfile_bike = (openfile_bike)GetProcAddress(hInstLibraryBike, "open_file ");//这一步始终返回为空
===============================
直接用空指针,不要用你使用的指向函数的指针,确保导出函数名字正确,应该可以成功调用。

读书人网 >VC/MFC

热点推荐