當前位置:首頁 » 編程軟體 » vs2013運行庫靜態編譯

vs2013運行庫靜態編譯

發布時間: 2022-12-22 17:44:38

㈠ vs 命令行編譯靜態庫

_declspec(dllexport) void test_print(char* sz_input);
這是動態鏈接庫 -- dllexport ,dll是動態鏈接庫。
不是你說的靜態庫。
動態鏈接庫,應用程序調用它,編譯鏈接時要有.lib, 運行時要有.dll

Debug\ -- 給別的程序用,要用 Release\,不能用 Debug\

char * __ptr64 sz_input;
__ptr64 -- 32位機上,指針sz_input截斷為32位.
char * __ptr32 sz_input;
__ptr32 -- 64位機上,指針sz_input變32位

wchar_t,_MBCS -- 表明你要用雙位元組字元,那麼程序就不應當用 單位元組char 型。如果你要編的不是要用雙位元組字元,那麼 就不要 wchar_t,_MBCS。

㈡ 用VS2013在win7下編寫的C++程序怎麼在XP下運行

額外說明:(1)程序必須為Dotnet 4.0及以下版本。(XP只支持Dotnet4.0及以下版本,不支持Dotnet 4.5)

(2)用C#編寫的程序,無需進行如下設置,只要在目標機的xp中安裝相應的Dotnet版本即可。

用VS2013在win7下編寫的C++程序在XP下運行的錯誤與解決。

1.在xp下運行報錯為:「不是有效的win32應用程序。」

解決方法:

【配置屬性】-【常規】-【平台工具集】,選擇「VisualStudio 2013 (v120 XP)」。

注意:C#編寫的程序沒有該選項,如何解決C#的程序在XP下的運行,待解決。

2.將原動態編譯改為靜態編譯,否則報錯為:未找到MSVCR120D.DLL「

解決方法:

【配置屬性】-【C/C++】-【代碼生成】-【基本運行時庫】,

由默認的「多線程調試DLL(/MDd)」,改成「多線程 (/MT)」,確定之後,重新編譯。

注意:網上說這一步需要根據你的當前工程屬性Debug還是Release來選擇「Multi-threadedDebug (/MTd)」或者「Multi-threaded (/MT)」,但我不論在debug還是release模式下,均選擇「多線程/MT」,均能正常運行。

3.【配置屬性】-【常規】-【使用MFC】,選擇「Use MFC in a Static Library」(非MFC程序可無視)。

注意:我改了這一步後,編譯報錯,原因未知。

只要做前面1,2步,即可在XP下運行。

4.將你的工程中依賴的所有外部庫,都按照步驟1~3重新編譯。

注意第四步很重要。如果你只完成了前三步,編譯工程發現一大堆link錯誤,那就是你第四步沒有做完整的原因了。

一個項目使用的庫中如果存在不同版本的基本運行時庫,必然導致沖突。

如果你用到的第三方庫沒有源碼,而且又不是用MTD或MT編譯的,很可能你就悲劇了。

5、網上說是還需在以下方面修改,未測試:

原文說:

項目菜單->項目屬性->鏈接器->系統->子系統->控制台或窗口windows(根據你的項目類型選擇),第二項版本號設成5.01。

㈢ vs2013怎麼在命令行使用cl編譯

1. 「cl不是可用的內部命令或可執行程序」
----原因:環境變數Path沒有設置好。
----解決:在環境變數Path中添加VC的bin目錄。Path= D:\Microsoft Visual Studio 9.0\VC\bin。在D:\Microsoft Visual Studio 9.0\VC\ce\bin下還有其他一些編譯器,看名字是交叉編譯用的
2.「mspdb80.dll無法找到」
----原因:vs2008的VC\bin目錄下缺少msobj80.dll、mspdb80.dll、mspdbcore.dll、mspdbsrv.exe這四個文件。
----解決:在D:\Microsoft Visual Studio 9.0\Common7\IDE下復制這四個文件到VC\bin。
3.解決以上問題以後,可以直接在命令行的任何目錄下編譯C/C++文件了。可是又出現新狀況:
「fatal error: cannot open include file」
----原因:vs2008未設置include和lib的環境變數。
----解決:
3.1在環境變數里添加變數INCLUDE,包含進VC\Include和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include(這個是安裝vs時自動安裝在C盤的)兩個目錄
INCLUDE=D:\Microsoft Visual Studio 9.0\VC\include; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
3.2添加變數LIB,包含進VC\lib和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib(這個也是安裝vs時自動安裝在C盤的)兩個目錄:
LIB=D:\Microsoft Visual Studio 9.0\VC\lib; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

4.提示:fatal error LNK1104: 無法打開文件「kernel32.lib」,(在IDE裡面運行沒有問題,因為IDE中採用了另外的封裝了庫)
----原因:vs2008未設置include和lib的環境變數。
----解決:在環境變數里添加變數LIB,C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
或者將kernel32.lib直接到vc的lib目錄下也可以

至此,問題終於解決了,hoho~o(∩_∩)o...
【Tips】
1.使用-GX選項時,2005的編譯器會提示GX已過時,使用-EHsc代替
cl : Command line warning D9035 : option 'GX' has been deprecated and will be re
moved in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
2.環境變數可以通過「我的電腦右鍵->高級->環境變數」設置。當然也有其它方法,欲知詳情請網路之。
【Ref】
http://blog.163.com/danshiming@126/blog/static/109412748201312703225352/(在命令行界面使用vs2005的cl )
http://hi..com/fymzone/blog/item/fdac1bfb9ba55f65034f5689.html(用vs2005編譯器cl在控制台下編譯)
http://hi..com/vanta/blog/item/f62035a80ec521b5cb130c3b.html(在cmd中鍵入cl執行編譯時會出現mspdb80.dll無法找到的情況)

㈣ vs2013如何實現C與Fortran混合編程

方法一,使用obj

  1. 創建兩個工程。其中一個 C ,其中一個Fortran

  2. 把被調用的工程編譯(但不鏈接),得到一個obj文件

  3. 把 obj 文件添加到需調用的工程中。鏈接。

方法二,使用lib

  1. 創建兩個工程。其中一個 C ,其中一個 Fortran(被調用的創建為靜態庫 lib)

  2. 把被調用的工程編譯,鏈接,得到一個 lib文件

  3. 把 lib文件添加到需調用的工程中。再次鏈接。

㈤ vs2013打開的cpp文件如何編譯

Visual Studio無法對單個源代碼文件直接編譯。

VisualStudio工程(.sln)編譯需要許多的參數,比如頭文件源文件,依賴庫等。如果沒有他們,強大的Studio只是廢物。


解決思路:

建立一個空VisualStudio工程->導入源代碼->編譯運行。


Step1 建立空項目

1.1 打開VisualStudio,按快捷鍵Ctrl + Shift + N,即可彈出新建項目的窗口。

(或,文件(FILE)->新建(NEW)->工程(Project)即可彈出新建項目的窗口。)


㈥ vs2012編寫的c#窗體程序在xp上跑不了,怎麼辦

微軟為了推銷自家平台,默認配置下VS2012和VS2013編寫的應用程序只能在Vista/Win7/Win8上運行。但幸好還保留了生成XP程序的設置項。XP和Win2003的用戶還是大量存在的,我們程序軟體的發布不能不考慮他們。

1.
項目菜單->項目屬性->配置屬性->常規->平台工具集,選擇「VS2013WindowsXP(v120_xp)」;

2. 項目菜單->項目屬性->配置屬性->常規->MFC的使用,選擇在靜態庫中使用MFC;

3.
項目菜單->項目屬性->鏈接器->系統->子系統->控制台或窗口windows(根據你的項目類型選擇),第二項版本號設成5.01。

4. C/C++->代碼生成->運行庫,選擇「多線程調試(/MTd)";

5. 還需要至少帶有Update3(或4),這一點我沒有驗證,因為我直接安裝的就是帶有Update3的VS2013。

以上就OK了。缺點仍然有,例如靜態編譯的EXE比正常動態要大不少,目前我尚未試出動態編譯後在XP中能運行的方法,--不過這個不要緊,因為VS2013版本如此之高,客戶的電腦上很難自帶配有它的運行庫,你即使動態編譯,發布軟體時也還是要帶上運行庫的,只不過在多個程序時只需帶一份運行庫罷了。

另外,我在實際大項目中用上述方法,仍有出錯現象發生。以後再研究吧。一般情況下上述方法就可以了。

在網上另外發現了這個貼子,說得很詳細,包括非IDE的命令行編譯,一起貼到下面:

問題一:編譯出來的exe在xp上面運行提示「不是有效的win32應用程序」

在vs2012/2013版本裡面,其自帶的c編譯器cl.exe,若直接使用cl
a.c編譯,那麼生成出來的exe放在vista及以上版本直接運行沒有問題,但是在xp上則會出來「不是有效的win32應用程序」的出錯提示。這是因為vs2012/2013自帶的c編譯器默認情況下生成的exe會默認只支持vista及以上版本的windows系統。

解決方法:

對於使用命令行cl.exe直接編譯的方式:

先用cl a.c編譯一遍,此時會生成a.exe和a.obj兩個文件,此時,再執行 link b.obj
/subsystem:console,5.01,它會鏈接一個新的a.exe出來,此時的exe就可以在xp上運行了。相比vs2010以及以前版本的編譯器編譯,會多第二步的link過程,後面的參數也很容易理解,subsystem,5.01,此處的5.01是指的windows內核版本號,5.01表示windows
2000 with sp1,即此exe可以在win2000 sp1及以上的windows中執行。

當然,這個地方的/subsystem後面有很多參數,上面給的console,5.01是指命令行程序,如果是有GUI即有窗口的程序,改成windows,5.01即可。!!注意!!此處的5.01一定不要想當然改成5.0就變成windows
2000
不帶sp1的版本,實際上,5.0並不被vs2013的編譯所承認,會報警告不認5.0,就會按照默認的不帶5.01的方式編譯,這樣就無法在vista以下的系統中運行生成的exe了。

對於在vs2013裡面使用新建項目的方式:

右擊相應的項目,選擇「屬性」,在項目屬性頁中的「配置屬性」下面的「常規」裡面,把「平台工具集」,由「Visual Studio 2013
(v120)」改成「Visual Studio 2013 - Windows XP
(v120_xp)」,確定之後,重新生成項目即可。當然這里按這樣修改的話,就只能在winxp及以上的版本系統裡面運行了。

問題二:用vs2010/2012/2013編譯出來的exe在未安裝vc++運行庫的機器上運行時提示」未找到MSVCR120D.DLL「從而無法運行

這是個老問題了,無非就是運行庫動態編譯和靜態編譯的問題了。dll動態載入的話有個好處,它可以減少生成的exe文件的體積,但是缺點就是如果對應的系統環境變數或者exe所在的目錄裡面找不到其所需要的dll文件的話,程序就會拒絕執行。而靜態編譯就是把所有需要的庫都靜態編譯到exe文件裡面,這樣就可以在所有的系統平台上都能運行,但它也有一個缺點,就是生成的exe文件因為已經帶了部分庫的代碼,所以體積會相對動態編譯出來的exe大(具體大多少要根據庫的內容才能確定)。

解決方法:

對於直接使用cl.exe和link.exe編譯連接的方式:

直接在cl.exe編譯的時候或者在makefile裡面把編譯參數加上/MT即可。

對於在vs2013裡面使用新建項目的方式:

右擊相應的項目,選擇「屬性」,在項目屬性頁中的「配置屬性」下面的「C/C++」下面的「代碼生成」一項,由默認的「多線程調試DLL
(/MDd)」,改成「多線程 (/MT)」,確定之後,重新生成項目即可。這樣所得的exe文件就是靜態編譯了。

㈦ vs2013如何靜態編譯

項目屬性-配置屬性-常規-MFC的使用-使用標准Windows庫(不用MFC)
然後,C/C++-代碼生成-運行庫-多線程/MT或者多線程調試/MTd
帶d的是鏈接調試版本,DEBUG項目選/MTd,Release項目選/MT
如果使用MFC,在MFC的使用中設置靜態、動態鏈接,代碼生成中必須使用<從上級繼承>

㈧ 怎樣在VS2013中配置QT5.4.1靜態庫

本篇接著上篇《怎樣配置VS2013+Qt5開發環境》繼續講解開發環境的安裝和設置。安裝包下載到本地電腦以後,要首先安裝qt5.5.1,然後再安裝vs插件,最後啟動VS2013進行配置。在本篇,我會將所有需要注意的要點一一向大家介紹。

㈨ VS2010 C3 wnform 如何靜態編譯

不行吧,你用NET FrameWork 2.0或3.0編譯一下,一般現在的電腦都自帶裝2.0或其他de的了

㈩ vs2013 c++ 調用lib需要dll文件嗎

打開工程的 Projects菜單,然後在Linker/Additional Library Directories中加入lib文件所在的路徑,在Input/Additional Dependencies加入lib文件名稱
如(my.lib) ,然後在要使用該函數的地方加上該LIB的頭文件,如#include "..\lib.h"即可(沒有頭文件當然就不用了),而且應用程序運行時也需要dll文件。

熱點內容
騷年直播密碼多少 發布:2025-07-16 07:20:55 瀏覽:915
率土之濱太守車怎麼配置軍團 發布:2025-07-16 07:14:36 瀏覽:696
k2的演算法 發布:2025-07-16 07:14:35 瀏覽:251
精雕編程員 發布:2025-07-16 07:13:58 瀏覽:268
二級c語言題庫下載 發布:2025-07-16 06:22:19 瀏覽:970
40台光纖監控如何配置 發布:2025-07-16 06:13:00 瀏覽:28
蘭博的腳本是什麼 發布:2025-07-16 06:11:16 瀏覽:715
sql導出存儲過程 發布:2025-07-16 06:10:41 瀏覽:971
c語言txt換行 發布:2025-07-16 06:00:25 瀏覽:280
騰訊視頻如何緩存加快 發布:2025-07-16 05:58:49 瀏覽:719