如何将参数传递给 dll

How to pass parameters to dll?

本文关键字:dll 参数传递      更新时间:2023-10-16

我在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;
        }
    }
}

当 fnCPPLibrary 没有参数时,我可以轻松调用它,但是如何将参数从程序传递到该 dll 函数?它是简单的还是需要一些复杂的代码?

函数指针必须具有与要调用的函数匹配的签名。

不知道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 的方式。