我正在尝试将库simplexlsxwriter与Qt一起使用,但是当我尝试编译时,我在代码中的几个地方遇到了以下错误:
“无法将'const TCHAR * {aka const wchar_t *}'转换为'const char *'以将参数'1'转换为'size_t strlen(const char *)'”
有问题的一行是:
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 $@ $^ $(LDFLAGS)
main: $(object)
-include $(src:.cpp=.d)
编译遇到绝对没有困难,我获得了所需的二进制文件。所以我的问题是,为什么使用Qt从const wchar_t *转换为const char *在使用“raw”mingw编译器时抛出错误,它不会抛出任何错误?
答案 0 :(得分:-1)
添加
DEFINES -= UNICODE
到 .pro 文件。 qmake 默认定义-DUNICODE
,与 win32 库冲突。