如题,我写了一个BHO程序,在其中调用一个MFC DLL,
但是在编译连接时有错误,错误如下
Linking...
   Creating library ReleaseMinSize/BHOPlugin.lib and object ReleaseMinSize/BHOPlugin.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseMinSize/BHOPlugin.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.请问是什么原因》
我用的是动态加载DLL的方式

解决方案 »

  1.   

    部分代码如下:
    case DISPID_DOCUMENTCOMPLETE:
            //::MessageBox(NULL, _T("DOCUMENT COMPLETE"), _T("信息"), MB_ICONINFORMATION);
    {
        HINSTANCE hInst;
        hInst = LoadLibrary("Test.dll");
    if (!hInst)
    {
    MessageBox(NULL,"DLL ERROR",NULL,MB_OK);
    return S_FALSE;
    }
        typedef int (*ADD)(int,int);
        ADD Add = (ADD)GetProcAddress(hInst,"add");
    if (Add == NULL)
    {
    MessageBox(NULL,"DLL Func Addr ERROR",NULL,MB_OK);
    return S_FALSE;
    }
        int c  = Add(8,6);
        char sad[20] = {0};
        itoa(c,sad,10);
        ::MessageBox(NULL,sad,NULL,MB_OK);
                               FreeLibrary(hInst);     break;
    }
      

  2.   

    我调试的时候发现是 hInst = LoadLibrary("Test.dll"); 
    hInst 为空
      

  3.   

    在BHO DLL中去除_ATL_MIN_CRT试试看
      

  4.   

    Debug模式下没有错误,但是因为是MFC DLL,所以调用DLL中的到出函数时,也就是执行时有错误,
    在Release下就会出现下面的错误,
    Linking... 
      Creating library ReleaseMinSize/BHOPlugin.lib and object ReleaseMinSize/BHOPlugin.exp 
    LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 
    ReleaseMinSize/BHOPlugin.dll : fatal error LNK1120: 1 unresolved externals 
    Error executing link.exe. 
      

  5.   

    MFC扩展DLL只能有一个CWinApp对象的MFC程序中使用。MFC标准DLL可以和其他标准DLL一样使用。
      

  6.   

    MFC扩展DLL只能被MFC的工程,exe/dll等来调用,如果是MFC DLL,可以被其他dll调用
      

  7.   

    MFC扩展DLL只能被MFC的工程,一般的MFC DLL没关系
      

  8.   

    我写的不是扩展MFC DLL
    而是动态的MFC DLL
    现在可以调用了
    将stdafx.cpp文件里的#include <atlimpl.cpp> 注释掉就可以了现在还有一个问题是
    为什么只能在Release模式下才能运行呢
    在debug模式下不能调用DLL里的导出函数
      

  9.   

    有可能时Release版本和Debug版本的设置不同,
    楼主编译Release时,改下项目设置中的“创规”->“MFC的使用”的设置。