C++ 如何将参数传递给dll?
我在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
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。谢谢你的帮助。