2009-02-04 100 views
0

我有幾個與Visual Studio 2008中的tessdll問題。僅供參考,我創建這個應用程序作爲MFC應用程序,我這樣做只是爲了利用我需要的簡單GUI。從這裏開始,它就是C++和win32。因爲某些原因,這個版本可以作爲調試版發佈(因爲我已經包含了我需要的頭文件和lib文件,並且dll駐留在我可以放入的每個目錄中......)。C++新手:有各種各樣的問題鏈接

那麼,就有可能創建一個發佈版本中的連接問題:

Linking... 
MTGOBot.obj : error LNK2001: unresolved external symbol "__declspec 
(dllimport) public: __thiscall TessDllAPI::TessDllAPI(char const 
*)" ([email protected]@[email protected]@Z) 
MTGOBot.obj : error LNK2001: unresolved external symbol "__declspec 
(dllimport) public: __thiscall TessDllAPI::~TessDllAPI(void)" (__imp_?? 
[email protected]@[email protected]) 
MTGOBot.obj : error LNK2001: unresolved external symbol "__declspec 
(dllimport) public: int __thiscall TessDllAPI::BeginPage(unsigned 
int,unsigned int,unsigned char *,unsigned char)" (__imp_? 
[email protected]@@[email protected]) 
MTGOBot.obj : error LNK2001: unresolved external symbol "__declspec 
(dllimport) public: struct ETEXT_STRUCT * __thiscall 
TessDllAPI::Recognize_all_Words(void)" (__imp_? 
[email protected]@@[email protected]@XZ) 
C:\CPP Projects\Visual Studio 2008\Projects\MTGO SO Bot\MTGO SO Bot 
\Release\MTGO SO Bot.exe : fatal error LNK1120: 4 unresolved externals 

此外,僅供參考,以tessdll.h源可以在這裏找到: http://code.google.com/p/tesseract-ocr/source/browse/trunk/tessdll.h?r=165

的詳細原因:

  • 我從工具欄調試通過並使用 集成調試器。
  • 我使用批次 Build來創建發佈版本。

回答

1

沒有看到項目設置,這是艱難的。 要檢查的事項(調試和發佈設置之間的差異):

1)您是否在發佈版本中包含.lib?

2)您是否意外地爲tessdll定義了預處理器指令?

我會遍歷設置,在調試和發佈之間來回切換,看看意外添加/忘記了什麼。

只有運行時才需要DLL的存在。你沒有那麼遠。

+0

如何確保lib包含在發佈版本中?我認爲proejct - >屬性 - >鏈接器 - >高級 - > aditional包括將適用於兩者?它似乎適用於調試。更多的細節已在問題中更新。 – Zombies 2009-02-04 19:16:52

2

第一次猜測:您沒有使用鏈接庫的DLL。鏈接器呼籲沒有找到一些符號,並且聽起來很像DLL。默認情況下(讀取:在Project Settings對話框啓動時),所有項目設置都是特定於構建配置(Debug,Release),但是您可以從GUI中選擇「All Configurations」。這可以解釋爲什麼它在一個配置中工作,而不是在另一個配置中。

嘗試

#pragma comment(lib:"tessdll") 
// (Of course you need to replace the `tessdll` with the name of the library.) 
在頭文件

,或者添加此庫中的「釋放」配置鏈接。