折腾了将近一天终于发现问题所在。
实验需要,想在vs工程里集成Qt和CUDA,总出现下面的错误:
[...]
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
[...]
Finished searching libraries LINK : warning LNK4098: defaultlib ‘MSVCRTD’ conflicts with use of other libs; use /NODEFAULTLIB:library
[...]
网上搜索了一下,发现是/MD、/MT选项的问题,网上都说改成/MT就可以了,试了N遍还是有这样的错误。
终于发现,Qt默认是用/MD(d)选项生成的。所以把所有选项都改为/MD(d),生成成功。
目前,只是生成成功,不知道运行时是否会出问题。因为网上有人说NVIDIA只提供了/MT方式的库,不知道是否是最新的消息。
另外,准备尝试用/MT方式生成Qt,如果有前辈已尝试过,请指教!