2009-04-23 50 views
0

我發現了一個偉大的C++/ODBC示例here ...C++ ODBC問題sqlucode.h頭

我下載的項目建立偉大的,一切正常。但是,當我將.cpp和.h文件複製到另一個項目時,我似乎遇到了鏈接問題。

sql.h中的SQLConnect函數是我想要的。當我在我下載的項目中的easyodbc.h文件中右鍵單擊該函數時,它跳轉到sql.h中的聲明。生活很好。

但是,在我創建的項目中,當我這樣做時,它跳轉到sqlucode.h中的UNICODE定義。這似乎是導致問題,我的測試項目崩潰。

我的項目中沒有任何地方的sqlucdode.h的#include,但它仍然可以解析sqlucode.h中的聲明。我怎樣才能防止這一點?謝謝。

回答

5

好像你有一個預處理器的問題,而不是一個鏈接問題。

您可能在項目文件中有UNICODE(或_UNICODE)的預處理器定義。在Visual C++ 2005和2008中,您可以通過轉到您的項目屬性並更改字符集來解決此問題。使用Unicode字符集使用多字節字符集。當您應用此設置時,Visual Studio將爲您修復正確的預處理器和鏈接器設置。

如果你的Visual Studio的早期版本仍然可以通過改變UNICODE_UNICODE預處理器定義到_MBCS修復它 - 它只是你必須自己去找他們。

編輯:我剛剛下載了示例代碼,並試用了它 - 好消息,這正如我猜到的,更改爲多字節字符集,你會沒事的。

+0

在哪裏/我該如何添加這個定義?我已經嘗試了一些東西,但我仍然遇到構建錯誤:錯誤C2664:'SQLConnectW':無法將參數2從'SQLCHAR *'轉換爲'SQLWCHAR *' – 2009-04-23 21:19:52