调用和传递DLL变量C ++

时间:2012-08-08 18:06:06

标签: c++ visual-c++ dll

我有一个源文件file.cpp,在其中我需要访问DLL file.dll。另外,我需要访问DoFunction中的file.dll函数,我需要从file.cpp传递一些变量。

我有:

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

我希望能够传递DoFunction 7个变量并让它返回必要的值。

提前致谢

2 个答案:

答案 0 :(得分:1)

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

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

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

if (pGNSI)
{
    pGNSI(p1,p2,p3,p4,p5,p6,p7);
}

答案 1 :(得分:1)

我猜你已经从msdn获得了这个例子。

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

void myFunc(int arg1, int arg2);

那么pGNSI应该是:

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

然后你不应该得到错误。

执行此操作的一种好方法是从DLL中提供导出的头文件,该文件声明函数指针并在应用程序中包含此标头。这使得定义一致且无错误。