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

これにより、関数へのポインターが返されます。

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

そうでない場合はNULL、単に呼び出します。たとえば、関数のシグネチャが 7 つのパラメーターを想定している場合:

if (pGNSI)
{
    pGNSI(p1,p2,p3,p4,p5,p6,p7);
}
于 2012-08-08T18:10:37.697 に答える
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 に答える