网上下载的sqlite3现成的dll是win32位的,而由于我正在写的程序是64位的,所以将网上下的sqlite3的源代码直接加载到工程中使用了。
最新版本的sqlite3源文件只有一个.h和.c文件,比以前用起来方便多了。
在这2个文件的Property -> c/c++ -> Precompiled Headers 中设置为Not Using Precompiled Headers并build后,出现了4个错误:
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) already defined in LIBCMTD.lib(new.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned __int64)" (??_U@YAPEAX_K@Z) already defined in LIBCMTD.lib(new2.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z) already defined in LIBCMTD.lib(delete2.obj)
fatal error LNK1169: one or more multiply defined symbols found
这个应该是c和c++在编译的时候调用了不同的类库导致的

在64位MFC工程中使用sqlite3源代码时,由于预编译头文件设置不当导致编译错误。解决方法是将sqlite3源文件的Precompiled Headers设置为Not Using Precompiled Headers,并在Linker的Command Line中添加/force选项,以忽略多重定义错误。经过此调整,程序可以成功编译并运行,但可能需要进一步测试潜在影响。
最低0.47元/天 解锁文章
1397

被折叠的 条评论
为什么被折叠?



