开发环境:VS.NET 2008代码中包含了:CreateWindow、ShowWindow、UpdateWindow、FindWindow 等API函数,如果项目属性里设置的“MFC的使用”是“使用标准 Windows 库”的话,编译可以正常通过,在本机这个DLL可以正常引用!但,若将“MFC的使用”设置为“在静态库中使用 MFC”时,就会无法编译通过,提示:错误 44 error LNK2019: 无法解析的外部符号 __imp__UpdateWindow@4,该符号在函数 _AutoRun 中被引用错误 45 error LNK2019: 无法解析的外部符号 __imp__ShowWindow@8,该符号在函数 _AutoRun 中被引用错误 46 error LNK2019: 无法解析的外部符号 __imp__FindWindowA@8,该符号在函数 _AutoRun 中被引用注:
1、代码语法没有问题,在“使用标准Windows库”时能编译通过;
2、AutoRun 是DLL中的一个函数,里面的代码有使用到CreateWindow、ShowWindow、UpdateWindow、FindWindow 等API函数!

解决方案 »

  1.   

    //手边没有VS2008,没有测试
    //加上
    #pragma comment(lib, "User32.lib") //??
      

  2.   

    把include <windows.h>删了
    换成
    include <afx.h>
      

  3.   

    问题已解决,在“链接器--命令行”中加入“/ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib”就能编译通过了!
      

  4.   

    缺少对应的lib文件,这些lib文件是编译器根据不同工程会帮你添加一下默认的
      

  5.   

     
    oyster2008 : 不知道为什么,你的方法不行,提示必须“Windows.h”,改成“afx.h”编译不通过 
    lfchen : 是正解!
      

  6.   

    那我就不知道了,我也是建的一个win32 dll项目,然后出现一样的错误,也是这样解决的啊