C++ 如何将参数传递给dll?

C++ 如何将参数传递给dll?,c++,dll,loadlibrary,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){ myCppPro

我在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;
        }
    }
}
intmain(){
FARPROC-myCppProc;
HINSTANCE hDll;
德沃德L;
int结果;
hDll=加载库(“CPPLibrary”);
如果(hDll!=NULL){
myCppProc=GetProcAddress(hDll,“fnCPPLibrary”);
如果(myCppProc!=NULL){
结果=mycpproc();

cout函数指针必须具有与正在调用的函数匹配的签名

不知道什么是
CPPLIBRARY\u 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

函数指针必须具有与您正在调用的函数匹配的签名

不知道什么是
CPPLIBRARY\u 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

函数指针必须具有与您正在调用的函数匹配的签名

不知道什么是
CPPLIBRARY\u 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

函数指针必须具有与您正在调用的函数匹配的签名

不知道什么是
CPPLIBRARY\u 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

的方法。您尝试查看了吗?它有一个示例。只需像调用任何需要参数的函数一样调用它。@crashmstr,是的,我读过,但我不懂。@PaulMcKenzie它抛出错误“调用的参数太多”@pawkondr该示例有点模糊,但您需要强制转换函数指针以获得正确的签名。但是一个简单的示例还有其他示例。您尝试查看了吗?它有一个示例。只需像调用任何需要参数的函数一样调用它。@crashmstr,是的,我读过,但我不懂。@PaulMcKenzie它会抛出错误“要调用的参数太多“@pawkondr该示例有点模糊,但您需要强制转换函数指针以获得正确的签名。但是一个简单的有其他示例。您是否尝试查看?它有一个示例。只需像调用任何需要参数的函数一样调用它。@crashmstr,是的,我读过,但我不理解。@PaulMcKenzie它抛出错误。”“要调用的参数太多“@pawkondr该示例有点模糊,但您需要强制转换函数指针以获得正确的签名。但是一个简单的有其他示例。您是否尝试查看?它有一个示例。只需像调用任何需要参数的函数一样调用它。@crashmstr,是的,我读过,但我不理解。@PaulMcKenzie它抛出错误。”“要调用的参数太多"@pawkondr示例有点模糊,但您需要强制转换函数指针以获得正确的签名。但是简单示例还有其他示例。感谢您的回答。它有效,但必须是:DLLFunc mycpproc而不是:DLLFunc myProc。感谢您的帮助。感谢您的回答。它有效,但必须是:DLLFunc mycpproc而不是:DLLFunc myProc.Tha谢谢你的帮助。谢谢你的回答。它成功了,但它必须是:DLLFunc mycpproc而不是:DLLFunc myProc。谢谢你的帮助。谢谢你的回答。它成功了,但它必须是:DLLFunc mycpproc而不是:DLLFunc myProc。谢谢你的帮助。