修改了一个atl写的com的dll,在debug版本的时候可以顺利得编译连接;但是改成release版本之后,编译没有问题,但是在连接的时候出现一下问题:
--------------------Configuration: SafeIE - Win32 Release MinSize--------------------
Compiling...
FiltrateIE.cpp
Linking...
   Creating library ReleaseMinSize/SafeIE.lib and object ReleaseMinSize/SafeIE.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseMinSize/SafeIE.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.SafeIE.dll - 2 error(s), 0 warning(s)
我在自己添加的代码中逐行注销进行连接,发现当源文件出现tolower函数会出现上面的错误,fopen函数也会导致相同的错误。我把这两个函数注销掉就不会有上面的问题。不知道这是什么原因引起的,别人告诉我库版本不对,但是我还是不知怎么改,还望有哪位高手指点一下,小弟不胜感激!

解决方案 »

  1.   

    外部调用错误,看看lib路径,否则打开msdn在索引中查"LNK2001",对以下错误吧.应该不难解决的.good luck to you
      

  2.   

    是不是在程序里调用了 比如 iostream.h 中的函数? 删掉试试
      

  3.   

    若要使用静态库,应该把它添加到你的工程中。然后include你想使用的头文件。
      

  4.   

    还有,静态库对应的DLL应该放在你的DEBUG/RELEASE目录下。
      

  5.   

    ^_^,project setting的c++选项中的最下面project option中将/MT改成/MD
      

  6.   

    Project -> Settings -> C/C++ -> Preprocessor definitions中去掉 _ATL_MIN_CRT 重新编译搞定。
      

  7.   

    将project setting的c++选项中的最下面project option中将/MT改成/MD会出现警告:D:\安装\Microsoft Visual Studio\VC98\ATL\INCLUDE\atlimpl.cpp(115) : warning C4273: 'malloc' : inconsistent dll linkage.  dllexport assumed.
    D:\安装\Microsoft Visual Studio\VC98\ATL\INCLUDE\atlimpl.cpp(143) : warning C4273: 'calloc' : inconsistent dll linkage.  dllexport assumed.
    D:\安装\Microsoft Visual Studio\VC98\ATL\INCLUDE\atlimpl.cpp(148) : warning C4273: 'realloc' : inconsistent dll linkage.  dllexport assumed.
    D:\安装\Microsoft Visual Studio\VC98\ATL\INCLUDE\atlimpl.cpp(166) : warning 
    楼上给的方法没有问题,在此谢过。不过能解释一下吗