我在DLL中有这个功能:
CPPLIBRARY_API int fnCPPLibrary(int a, int b)
{
return a + b;
}
主要功能:
int main(){
FARPROC myCppProc;
HINSTANCE hDll;
DWORD L;
int result;
hDll = LoadLibrary("CPPLibrary");
if (hDll != NULL){
myCppProc = GetProcAddress(hDll, "fnCPPLibrary");
if (myCppProc != NULL){
result = myCppProc();
cout <<"Result from library: " <<result;
int a;
}
}
}
当它没有参数但是如何将params从程序传递给该dll函数时,我可以很容易地调用fnCPPLibrary?是简单还是需要一些复杂的代码?
答案 0 :(得分:3)
函数指针必须具有与您正在调用的函数匹配的签名。
不知道CPPLIBRARY_API
是什么:
typedef int (*DLLFunc)(int, int);
DLLFunc myCppProc;
//...
myCppProc = (DLLFunc)GetProcAddress(hDll, "fnCPPLibrary"); // Cast to function pointer
myCppProc(1, 2); // call function
我不知道CPPLIBRARY_API包含的限定符是什么,它可能很重要(可能是调用约定 - 您必须发布此信息)。但总的来说,这就是你声明一个函数指针并使用GetProcAddress
。