[問題] link時LNK2005出現錯誤 想問怎麼做才對
看板C_and_CPP (C/C++)作者donkeychen (Bad_To_The_Bone)時間12年前 (2013/11/07 15:04)推噓2(2推 0噓 3→)留言5則, 2人參與討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2005
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
SQLite3
問題(Question):
我開一個VC solution
------------------------------------------------------
Project SQLite3 :編譯目標 Static Libary
source code: 網路上抓的sqlite3.c sqlite3.h
編譯成功 輸出 SQLite3.lib
-------------------------------------------------------
Project SQLite3Log:編譯目標 Static Library
source code: 一點std::wstring <-> std::string 的轉換
.h檔內容
------------------------------------------
#include sqlite3.h
namespace SQLite3Log
{
sqlite3 *SQLite3db_;
bool initSQLite3DB(bool use_original_db);
void closeSQLite3DB(void);
};
-------------------------------------------
使用到 sqlite3型態
initSQLite3DB
使用 sqlite3_config (定義在sqlite3.h)
使用 sqlite3_open (定義在sqlite3.h)
closeSQLite3DB
使用 sqlite3_close (定義在sqlite3.h)
Solution裡面設定 Project SQLite3Log depend on Project SQLite3
然後這個project設定Link Library Dependence
編譯成功 輸出檔案 SQLite3Log.lib
-------------------------------------------------------
Project SQLite3LogTest
source code: 使用SQLite3Log::initSQLite3DB
#include "SQLite3Log.h"
Solution裡面設定 Project SQLite3LogTest depend on Project SQLite3Log
然後這個project設定Link Library Dependence
編譯失敗
錯誤
sqlite3log.lib(SQLite3Log.obj) : error LNK2005: "struct sqlite3 *
SQLite3Log::SQLite3db_" (?SQLite3db_@SQLite3Log@@3PAUsqlite3@@A) already
defined in SQLite3LogTest.obj
程式碼(Code):(請善用置底文網頁, 記得排版)
code不多 不知道是否與VC設定有關
我把整個Solution壓縮
請看Release|Win32設定
https://dl.dropboxusercontent.com/u/57491997/test.zip
補充說明(Supplement):
不是很懂要怎麼看這種Libary重複定義的問題
看錯誤訊息 我在SQLite3Log.h宣告的 SQLite3db_ 被重複宣告
即使加入#ifndef xx #define xxx #endif
也還是錯誤
想請教一下該如何解決呢
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.147.226
推
11/07 15:51, , 1F
11/07 15:51, 1F
→
11/07 15:52, , 2F
11/07 15:52, 2F
→
11/07 16:40, , 3F
11/07 16:40, 3F
推
11/07 16:43, , 4F
11/07 16:43, 4F
→
11/07 16:59, , 5F
11/07 16:59, 5F
SQLite3.lib(sqlite3.obj) : warning LNK4006: _sqlite3_blob_open already
defined in SQLite3Log.lib(sqlite3.obj); second definition ignored
這類型的東西有5千多行 orz
感謝大大
※ 編輯: donkeychen 來自: 210.59.147.226 (11/07 17:00)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
14
30