我有一个源文件file.cpp,在其中我需要访问DLL file.dll
。另外,我需要访问DoFunction
中的file.dll
函数,我需要从file.cpp
传递一些变量。
我有:
m_hinstPtiDLL = LoadLibrary("file.dll");
pGNSI = (PGNSI) GetProcAddress(m_hinstPtiDLL, "DoFunction");
我希望能够传递DoFunction
7个变量并让它返回必要的值。
提前致谢
答案 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中提供导出的头文件,该文件声明函数指针并在应用程序中包含此标头。这使得定义一致且无错误。