在.c文件中加载DLL的问题

时间:2009-06-11 09:26:48

标签: dll

typedef void (*EntryPointfuncPtr)(int argc, const char * argv );  
HINSTANCE LoadME;
LoadMe = LoadLibrary("LoadMe.dll");
if (LoadMe != 0)
EntryPointfuncPtr LibMainEntryPoint;  //GIve error in .c file but working fine in Cpp file.

//Error:illegal use of this type as an expression

LibMainEntryPoint = (EntryPointfuncPtr)GetProcAddress(LoadMe,"entryPoint");

任何人都可以告诉我如何删除此编译错误。

2 个答案:

答案 0 :(得分:2)

您的代码有两个问题:

  1. HINSTANCE变量声明为LoadME,但在初始化和使用时拼写为LoadMe。选择一种拼写或其他拼写。

  2. if语句后面的两行在不同的范围内。这是您看到的编译器错误的原因。将这些行括在大括号中,使它们在同一范围内

  3. 这对我有用:

    typedef void (*EntryPointfuncPtr)(int argc, const char * argv);  
    HINSTANCE LoadMe;
    LoadMe = LoadLibrary("LoadMe.dll");
    if (LoadMe != 0)
    {
        EntryPointfuncPtr LibMainEntryPoint;
        LibMainEntryPoint = (EntryPointfuncPtr)GetProcAddress(LoadMe,"entryPoint");
    }
    

    安迪

答案 1 :(得分:0)

将typedef更改为此可能有效:

typedef void (*EntryPointfuncPtr)(int, const char*);