VS2010中如何將動態鏈接庫改成靜態鏈接庫
VS2010靜態編譯生成的.exe可執行文件,可以免安裝免DLL在其他電腦直接運行。
靜態編譯:就是在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴動態鏈接庫。
1. 編譯實現方式有兩種
【1】debug方式的靜態鏈接:
設置:
(1)項目 -> 配置屬性->常規->MFC的使用:在靜態庫中使用MFC(如果有使用MFC)。
(2)項目 -> 配置屬性->C/C++->代碼生成->運行庫 :選擇 多線程調試(/MTd)。
編譯時,選擇的是debug,win32
然后執行編譯生成方案,在該工程目錄下的debug文件中,找到該.exe文件,即可在其他電腦運行。
debug方式生成的.exe文件會比較大,因為它包含了一些調試用的信息。
【2】release方式,
就是正式版發行版
一般可以配置以下兩項:
(1)項目 -> 配置屬性->常規->MFC的使用 :在靜態庫中使用MFC(如果有使用MFC)。
(Project—Properties—Configuration Properties—General—Use of MFC—Use MFC in a Static Library)
(2)項目 -> 配置屬性->C/C++->代碼生成->運行庫 :選擇 多線程(/MT)。
(Project—Properties—Configuration Properties—C/C++—Code Generation—Runtime Library—Multi-threaded(/MT))
編譯時,選擇的是release(這個選擇項在工具欄的debug下拉列表中),win32。
然后執行編譯生成方案,在該工程目錄下的release文件中,找到該.exe文件,即可在其他電腦運行。
2. 可能出現的問題
(1)提示一些庫缺失
解決:則需要把相應缺失的庫添加到exe當前目錄
例如:把相應的glut32.dll添加到exe當前目錄即可處理