0

I have a source file file.cpp and within it I need to access a DLL file.dll. Also I need access to the function DoFunction within file.dll and I need to pass it some variables from the file.cpp.

I have:

m_hinstPtiDLL = LoadLibrary("file.dll");
pGNSI = (PGNSI) GetProcAddress(m_hinstPtiDLL, "DoFunction");

I want to be able to pass DoFunction 7 variables and have it return the necessary value.

Thanks in advance

4

2 回答 2

1

我想您已经从msdn中获取了示例。

pGNSI 应该是指向在 DLL 中定义的函数的确切原型的函数的指针。如果您在 DLL 中有此功能:

void myFunc(int arg1, int arg2);

那么 pGNSI 应该是:

typedef void (*pGNSI)(int arg1, int arg2);

那么你不应该得到一个错误。

这样做的一个好方法是从您的 DLL 中提供一个导出的头文件,该文件声明函数指针并将此头文件包含在应用程序中。这使得定义一致且没有错误。

于 2012-08-16T16:09:20.877 回答
1

这将返回一个指向函数的指针。

pGNSI = (PGNSI)GetProcAddress(m_hinstPtiDLL, "DoFunction");

如果不是,NULL那么只需调用它。例如,如果函数的签名需要 7 个参数:

if (pGNSI)
{
    pGNSI(p1,p2,p3,p4,p5,p6,p7);
}
于 2012-08-08T18:10:37.697 回答