环境: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.
请帮忙看看,谢谢各位!
12 个解决方案
#1
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?
#2
http://bbs.csdn.net/topics/390374923
现在已经可以编译通过了
#3
这些问题一般都是链接库不成功!
#4
把原工程的代码拷贝到一个新的工程,编译通过。
之后关掉新的工程,重新打开,编译,又出现:error LNK2005...
还是没有解决问题。
之后关掉新的工程,重新打开,编译,又出现:error LNK2005...
还是没有解决问题。
#5
“重建所有”不通过,编译通过没用。
#6
工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项
工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
#7
但现在是:“重建所有”通过,关闭工程,重新打开来编译不能通过。
#8
把原工程的代码拷贝到一个新的工程,“重建所有”通过,关闭新工程,重新打开来编译不能通过。
#9
工程是关于一个sqlite3的类的二次封装。
怎样可以上传工程项目代码?
怎样可以上传工程项目代码?
#10
肯定是设置不对
#11
终于解决了!!
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
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
#12
搜“跟我一起写makefile”
#1
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?
#2
http://bbs.csdn.net/topics/390374923
现在已经可以编译通过了
#3
这些问题一般都是链接库不成功!
#4
把原工程的代码拷贝到一个新的工程,编译通过。
之后关掉新的工程,重新打开,编译,又出现:error LNK2005...
还是没有解决问题。
之后关掉新的工程,重新打开,编译,又出现:error LNK2005...
还是没有解决问题。
#5
“重建所有”不通过,编译通过没用。
#6
工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项
工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
#7
但现在是:“重建所有”通过,关闭工程,重新打开来编译不能通过。
#8
把原工程的代码拷贝到一个新的工程,“重建所有”通过,关闭新工程,重新打开来编译不能通过。
#9
工程是关于一个sqlite3的类的二次封装。
怎样可以上传工程项目代码?
怎样可以上传工程项目代码?
#10
肯定是设置不对
#11
终于解决了!!
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
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
#12
搜“跟我一起写makefile”