2010-11-12 101 views
4

我在Windows 7(32位)上運行最新的cygwin,並嘗試構建一個開源項目RtAudio(它目前不在此平臺上構建)。tchar.h在cygwin上找不到

我工作過的其中一個問題是行 #include <tchar.h>上的錯誤。

我構建線是:

g++ -O2 -Wall -Iinclude -DHAVE_GETTIMEOFDAY -D__WINDOWS_DS__ -c RtAudio.cpp -o RtAudio.o 

的錯誤是:

tchar.h: No such file or directory 

如果我添加/ usr/include目錄/ MinGW的(其中包含TCHAR.H),包括路徑的列表,我得到更多的錯誤。

我已經解決了這個問題,沒有使用LPCTSTR,只是重載了一個函數,需要它爲const char*const wchar_t*,所以我可以避免包含tchar.h,但有沒有更好的方法來做到這一點?

+0

你爲什麼使用Cygwin? RtAudio聲稱擁有本機Windows支持;你最好直接使用MinGW或Microsoft編譯器。它看起來像RtAudio發行版包含一個Visual Studio設置,可能是信息。 – Porculus 2010-11-13 00:14:12

+0

@Porculus,好問題。我正在使用的其他組件需要linuxy環境。 – 2010-11-15 19:23:28

回答

5

tchar.h是一個Windows標頭。如果需要的不僅僅是基礎知識,軟件將不得不移植到libiconv或ICU。

+0

所以這聽起來像超載是在這種情況下去的方式? – 2010-11-12 21:16:51

+0

我不能確切地知道你做了什麼。 – 2010-11-12 21:23:00

+0

tchar.h無法找到 – MistyD 2015-01-28 19:35:36

2

如果你想爲Cygwin構建它,你應該確保它使用Unix/Linux代碼路徑而不是Windows路徑。特別是,WIN32宏通常用於防範Windows代碼,但是它也在Cygwin上定義,因此您可能必須將任何此類警衛更改爲#if defined(__WIN32__) && !defined(__CYGWIN__)

另一種方法當然是爲本機Windows構建。在Cygwin中,您可以使用gcc-3 -mno-cygwin或最近添加到Cygwin發行版中的MinGW-w64交叉編譯器來執行此操作。

+0

你能解釋一下'#if defined (__WIN32__)&&!defined(__ CYGWIN __)。'我應該在哪裏添加頭文件? – MistyD 2015-01-28 19:36:09