如何将参数传递给dll?

时间:2014-12-08 15:41:13

标签: c++ dll loadlibrary

我在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?是简单还是需要一些复杂的代码?

1 个答案:

答案 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

的方法