动态调用dll,GetProcAddress返回不了地址的问题。

lishidahappy 2006-01-13 09:36:39
各位大虾,本人测试 自己编写的dll函数,静态调用时没有问题,但如下动态调用时,getprocessaddress 返回null,本人取得的错误吗是127,"can't find the procedure in the dll",
不知道为什么?请各位大虾鼎力相助!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int ( *test01)(); //定义函数指针。
HINSTANCE hDLL=LoadLibrary("D:\\newdlltest\\Project2.dll");
if(!hDLL)
{
ShowMessage("Can not load DLL");
}
else
{
(void *)test01=GetProcAddress(hDLL,"test");
int echo=GetLastError();
if(test01 == NULL)
{
ShowMessage("the address can't be load");
return ;
}
int a=test01();
}
FreeLibrary(hDLL);

创建dll源代码:
extern "C" __declspec(dllexport) int test();
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
int test(){
return 3;
}
...全文
335 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishidahappy 2006-01-13
  • 打赏
  • 举报
回复
非常感谢!
TR@SOE 2006-01-13
  • 打赏
  • 举报
回复
呵呵,估计是函数的名字不匹配啊。按照老妖的方法先TRY下。
ccrun.com 2006-01-13
  • 打赏
  • 举报
回复
将导出函数加上__stdcall修饰符:
extern "C" __declspec(dllexport) int __stdcall test();

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧