BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / windows / #116137同步于 2011/6/2
Windows机器人发帖

【请教】关于__stdcall的动态库函数声明及动态库调用的疑问

zzh
2011/6/2镜像同步0 回复
动态库的源码是: // lib.h extern "C" __declspec (dllexport) void __stdcall add(char * x); // lib.cpp #include <windows.h> #include "lib.h" void WINAPI add(char *x) { strcpy(x, "hello"); return; } 用VC新建mfc应用工程,对动态库的调用: void CDllTest_ToolDlg::OnOK() { // TODO: Add extra validation here typedef void (__stdcall *ABCD)(char *); HINSTANCE hdll = LoadLibrary(_T("..\\debug\\dllTest.dll")); if (hdll == NULL) { MessageBox("调用动态库失败"); return; } // ABCD add = (ABCD)GetProcAddress(hdll, "add"); ABCD add = (ABCD)GetProcAddress(hdll, "_add@4"); if (add == NULL) { MessageBox("调用函数地址失败"); return; } char ret[10]; add(ret); MessageBox(ret); } 问题: 虽然typedef时也加上了__stdcall,但是在获取add函数地址时,用"add"不行。。。还是得写成"_add@4",为什么呢?要怎么做才能直接用"add"就可以找到到add函数的地址呢?
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。