我已經在VS C++ 2010 Express Edition中編寫了一個應用程序,它由一些DLL組成,並且還依賴於一些第三方DLL。 應用程序本身是一個DLL。VS 2010應用程序需要VS運行時安裝 - 如何避免這種情況?
事實證明,要使其在另一臺機器上工作,用戶必須安裝VS 2010可再發行版運行時。
我試圖用標誌/ MT而不是/ MD來構建我的DLL--我相信這意味着我想要靜態鏈接..但是,在這種情況下,我得到了有關MSCVRT.lib的'多重定義'錯誤。錯誤消息還建議使用標誌/NODEFAULTLIB:msvcrt.lib來避免這種情況。但是,使用這些設置我的應用程序仍然需要運行時安裝
有人請解釋我如何避免這種情況?
感謝, 羅布斯塔
更新:如果我簡單的使用/ MT標誌,而不是/ MD我得到以下錯誤
MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in LIBCMT.lib(typinfo.obj) MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in LIBCMT.lib(typinfo.obj) Creating library C:\MyApp\Release\MyApp.lib and object C:\MyApp\Release\MyApp.exp LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library C:\MyApp\Release\MyApp.dll : fatal error LNK1169: one or more multiply defined symbols found
添加標誌/ NODEFAULTLIB後:圖書館我沒有得到任何錯誤,應用程序已成功構建,但仍需要運行時安裝。
是否有可能第三方庫,我也鏈接,需要運行時?
您可以添加詳細信息/標籤,例如您正在使用的語言,您在應用程序中使用的dll引用以及錯誤消息的文本。 – Oded 2010-09-05 14:13:19
我假設你使用VC++? – Excel20 2010-09-05 14:13:51