我做了一个DLL,之前编译还好好的,而且好像也没有改动过些什么,但今天早上再编译时就出错了……哎!
出错信息如下:正在编译...
3DS.cpp
正在链接...
mfcs71d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
mfcs71d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 已在 MSVCRTD.lib(dllmain.obj) 中定义;已忽略第二个定义
   正在创建库 Debug/3DS.lib 和对象 Debug/3DS.exp
..\..\..\bin/3DS.dll : fatal error LNK1169: 找到一个或多个多重定义的符号

解决方案 »

  1.   

    删除DEUBG目录.在试一次.可能是以修饰形式显示的给定被多次定义symbol 将被添加两次/FORCE 或 /FORCE:MULTIPLE 选项重写该错误
      

  2.   

    因为工程连接(动态或静态)了MFC库,MFC库在内部实现了DllMain,在Project/Settings中将关于MFC库的连接去掉即可
      

  3.   

    还是不行,我对MFC不熟,大虾救命啊!
    我的工程其实很简单,只是建立了一个MFC的DLL(好像在VC2003里无法建立不是MFC的DLL?),然后我另外创建了一个类在别的文件里。最后把那个类包含进DLL的头文件,并写了extern "C" __declspec(dllexport) C3DSReader* CreateObjectofC3DSReader()的输出而已。其他东西都没有碰过啊?奇怪!!!
      

  4.   

    1.rebuild all
    2.link 的edit设定中nodefaultlib:"MSVCRTD.lib"
    3.检查设定的编译路径,使用defautl的路径,就是vc自带的再试试看