error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义

tony2278 2013-11-12 08:56:37

环境:VC6
Project1: MFC AppWizard(dll),not MFC AppWizard(exe)
"Use MFC in a Shared Dll"
工程里面使用了另外一个库:sqlite3.lib

#pragma comment(lib, "sqlite3.lib")
#include "sqlite3.h"

Build:


Linking...
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj); second definition ignored
Creating library Debug/DataBase.lib and object Debug/DataBase.exp
Debug/DataBase.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

请帮忙看看,谢谢各位!
...全文
1859 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-11-13
  • 打赏
  • 举报
回复
搜“跟我一起写makefile”
max_min_ 2013-11-12
  • 打赏
  • 举报
回复
引用 2 楼 tony2278 的回复:
http://bbs.csdn.net/topics/390374923 现在已经可以编译通过了
这些问题一般都是链接库不成功!
tony2278 2013-11-12
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390374923 现在已经可以编译通过了
tony2278 2013-11-12
  • 打赏
  • 举报
回复
error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 VC2005解决办法: 1)Debug版本: 项目-属性-链接器-输入:忽略特定库中输入mfc80d.lib;mfcs80d.lib 项目-属性-链接器-附加依赖项:mfc80d.lib;mfcs80d.lib 就可以保证mfc80d和mfcs80d先于MSVCRTD.lib链接,OK,成功 2)Release版本 与Debug版本不同在于mfc80.lib;mfcs80.lib 以上方案来自:http://hi.baidu.com/duizhe_memory/item/56d1d54316a2d7dfc0a592e3 但工具是:VC2005 请问怎样可以将上面的方法具体实施在VC6?
tony2278 2013-11-12
  • 打赏
  • 举报
回复
终于解决了!!

Project -- Setting -- Link -- General -- Object/library modules: sqlite3.lib
Project -- Setting -- Link -- Input -- Ignore libraries:MSVCRT.lib
还改了一处:Use run-time library为Multithreaded Dll

在VC中调用时,首先要通过"工具-》选项-》目录"来设定library的路径: sqlite3.lib



huanghbj 2013-11-12
  • 打赏
  • 举报
回复
肯定是设置不对
tony2278 2013-11-12
  • 打赏
  • 举报
回复
工程是关于一个sqlite3的类的二次封装。 怎样可以上传工程项目代码?
tony2278 2013-11-12
  • 打赏
  • 举报
回复
把原工程的代码拷贝到一个新的工程,“重建所有”通过,关闭新工程,重新打开来编译不能通过。
tony2278 2013-11-12
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
“重建所有”不通过,编译通过没用。
但现在是:“重建所有”通过,关闭工程,重新打开来编译不能通过。
赵4老师 2013-11-12
  • 打赏
  • 举报
回复
工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
赵4老师 2013-11-12
  • 打赏
  • 举报
回复
“重建所有”不通过,编译通过没用。
tony2278 2013-11-12
  • 打赏
  • 举报
回复
把原工程的代码拷贝到一个新的工程,编译通过。 之后关掉新的工程,重新打开,编译,又出现:error LNK2005... 还是没有解决问题。

65,207

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧