使用cpp中的参数动态调用外部dll

时间:2012-10-16 13:11:13

标签: c++ dynamic dll

我在MSDN上找到了这个示例,我正在尝试使用它,但是我在使用参数(http://msdn.microsoft.com/en-us/library/ms686944(VS.85).aspx)时遇到问题

下面是我尝试使用的代码,我试图调用的方法有4个参数(CString a,CString b,CString c,BOOL d)。

extern "C" __declspec(dllexport) int __stdcall 
    ImportFile(CString a, CString b, CString c, BOOL d)
{
    HINSTANCE hinstLib; 
    MYPROC ProcAdd; 
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; 

    // Get a handle to the DLL module.
    hinstLib = LoadLibrary(TEXT("C:\MyDll.dll")); 

    // If the handle is valid, try to get the function address.
    if (hinstLib != NULL) 
    { 
        ProcAdd = (MYPROC) GetProcAddress(hinstLib, "TestFunction"); 

        // If the function address is valid, call the function.
        if (NULL != ProcAdd) 
        {
            fRunTimeLinkSuccess = TRUE;
            (ProcAdd) (a, b, c, d); 
        }
        // Free the DLL module.
        fFreeResult = FreeLibrary(hinstLib); 
    } 

    // If unable to call the DLL function
    if (!fRunTimeLinkSuccess) 
        return -1;

    return 0;
}

任何想法我做错了什么?在此先感谢!!!

1 个答案:

答案 0 :(得分:4)

我现在正在使用它...我错过了定义的typedef中的额外参数:

typedef int (__cdecl *MYPROC)(CString a, CString b, CString c, BOOL d);