0
我想利用圖書館simplexlsxwriter使用Qt,但是當我嘗試編譯我的代碼在幾個地方遇到了以下錯誤不允許「不能轉換 'const的TCHAR * {又名常量爲wchar_t *}' 到 '常量字符*' 的參數 '1' 到 '爲size_t的strlen(常量字符*)'」轉換,用qt
所討論的行是:
bool HasZipSuffix(const TCHAR *fn) {
const TCHAR *ext = fn+_tcslen(fn);
}
爲了消除錯誤,我嘗試了以下操作:
bool HasZipSuffix(const TCHAR *fn) {
const char* fn_cc = reinterpret_cast<const char*> (fn);
const TCHAR *ext = fn+_tcslen(fn_cc);
}
它的工作原理,但它編譯過程中引入了很多錯誤(約3720問題)。我在Qt下使用mingw53_32。
這是因爲當我創建一個簡單的Makefile如下很奇怪:
ROOT_DIR := ./
CXXFLAGS=-MMD -MP -Wall
CXXFLAGS+= -I$(ROOT_DIR)
src = Zip/zip.cpp \
Xlsx/Chartsheet.cpp \
Xlsx/Workbook.cpp \
Xlsx/Worksheet.cpp \
Xlsx/XlsxHeaders.cpp \
main.cpp
includes = Zip/zip.h \
tchar.h \
Xlsx/Chartsheet.h \
Xlsx/SimpleXlsxDef.h \
Xlsx/Workbook.h \
Xlsx/Worksheet.h \
Xlsx/XlsxHeaders.h
object=$(src:.cpp=.o)
%: %.o
$(LINK.cpp) -o [email protected] $^ $(LDFLAGS)
main: $(object)
-include $(src:.cpp=.d)
編譯遇到絕對沒有困難,我獲得所需的二進制文件。所以我的問題是,爲什麼使用Qt從常量wchar_t *轉換爲const char *在使用「原始」mingw編譯器時拋出錯誤,它不會拋出任何錯誤?
有一些函數可以實際轉換底層數據,但不能在二進制級別的不同事物之間重新進行reinterpret_cast。 –
我不應該在這個問題中添加reinterpret_cast事物,因爲它更關注於原因,爲什麼使用mingw32(使用gcc版本5.3)從'const wchar_t *'轉換爲'const char *'不會引發任何錯誤,但是當我使用相同的使用Qt的編譯器時,它會拋出一個錯誤? –
@SchneiderLoïc:Qt是一種紅鯡魚。這只是一個圖書館。最有可能的是,你有其他編譯器標誌。 – MSalters