當前位置:首頁 » 編程軟體 » cbuilder靜態編譯

cbuilder靜態編譯

發布時間: 2022-09-10 16:24:48

1. codeblocks+mingw怎麼實現靜態編譯

你在設置->編譯器與調試器->連接器設置->其他鏈接器選項 裡面加:-static
這樣因該最直接。

你是不是出現丟失libgcc_s_dw2-1.dll
這個出現在用g++ 編譯C的情況,如果你只用到那個C,而不用C++的話可以修改工具鏈可執行文件中動態鏈接器:把mingw32-g++.exe改為mingw32-gcc.exe,連接器就不用加-static了。
如果把動態鏈接器改為mingw32-gcc.exe 編譯C++的時候你就要在鏈接器選項里加
-lstdc++ -static兩個選項了。

總之:如果你只用C++的話,應該不會出現這個問題。
只用C的話,建議你修改工具鏈可執行文件中動態鏈接器:把mingw32-g++.exe改為mingw32-gcc.exe

2. C++ Builder 2010 怎麼靜態編譯

可以配置一下兩項:項目 -> 配置屬性->常規->MFC的使用 :在靜態庫中使用MFC(此項必須設置)。
項目 -> 配置屬性->C/C++->代碼生成->運行庫 :選擇/MT。(此項可選,設置之後部分機器可能會編譯出錯)

3. 如何使用C++Builder編譯Delphi使用Obj文件

一直以來,Delphi 都可以用命令行 dcc32 ProjectName.dpr 對項目進行編譯鏈接,非常方便,Delphi對項目文件的參數配置處理的很簡單,便於閱讀處理起來也很直觀,編譯的中間文件也很簡單(dcu,dcp)。
而C++Builder就沒那麼幸運了,因為包含了C++的特徵,各種編譯的中間文件:lib,obj,res,map,tds。後來新版又增加了一些預編譯文件:ilc,ild,ilf,...,pch,#00,...等等等等,各種搜索路徑(Include Path,Library Path,Browse Path...),要是用bcc32及ilink32手工進行編譯鏈接,命令的參數都足夠寫上大半天。幸好,在舊版C++Builder中,如果要用命令行編譯BCB項目,只要將bpr文件轉換為mak文件,再使用make命令進行編譯鏈接也比較方便,不需要過多的處理:
[plain] view plainprint?
bpr2mak -oProject1.mak Project1.bpr
make -fProject1.mak

自從Delphi/C++Builder開始使用 MSBuild* 編譯系統後(好像是RAD Studio 2006開始,具體忘記了),Delphi項目在保存為dpr的同時,也會保存一份dproj的項目文件,dpr依舊沿用舊格式,dproj 則以MSBuild規范以XML格式保存,除了可以用舊方式命令行編譯dpr外,也可以用:

[plain] view plainprint?
msbuild.exe /t:Rebuild /p:Config=Debug ProjectName.dproj

進行編譯,但msbuild必須設定一些環境變數,RAD Studio自帶了一個命令行工具已經做好了這些,其實就是設定了以下幾個環境變數($(BDS)\bin\rsvars.bat):

[plain] view plainprint?
@SET BDS=C:\Embarcadero\RAD Studio\7.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN

C++Builder則又更杯具了一些,bpr2mak.exe工具已經沒有了,所以只能採用MSBuild進行命令行編譯。更加杯具的是,隨著Delphi和BCB被多次轉賣收購,新版本的發布似乎總會有各種各樣的Bug,比如手頭的RAD Studio 2009進行命令行編譯,Delphi正常,BCB則報出超過100個錯誤,類似如下:

[plain] view plainprint?
C:\Embarcadero\RAD Studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Error: Unresolved external '__fastcall Strhlpr::UnicodeFree(System::UnicodeString&)' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|ustring
C:\Embarcadero\RAD Studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Error: Unresolved external 'Typinfo::BooleanIdents' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|vclinit

檢查了一下發現編譯過程(bcc32.exe)沒有問題,只是在ilink32.exe鏈接過程中報錯,在IDE中打開此項目進行編譯,查看Message->Output窗口,比較兩者的ilink32命令行參數,發現兩者有兩個地方有明顯差異,一個是IDE生成的命令中沒有類似 C:\Embarcadero\RAD Studio\7.0\lib\EN\debug 的路徑(指的是EN這個目錄,去除上面rsvars.bat中的@SET LANGDIR=EN 就可以避免產生這樣的搜索路徑) ,但是雖然這個目錄不存在,也應該不至於導致出錯。第二個差異是缺少了rtl.bpi和vcl.bpi的附加obj參數,解決辦法是在$(BDS)\bin目錄中找到 CodeGear.Cpp.Targets 文件,用記事本打開,搜索字元「memmgr.lib「,在前面加上"rtl.bpi;vcl.bpi" (用;分隔,不含引號),一共有兩處要修改。或者查找 "c0w32",在後面加上 "rtl.bpi;vcl.bpi",只有一處修改 —— 因為IDE的命令行中 rtl.bpi vcl.bpi是在c0w32和memmgr.lib中間的。—— (注意:在XE2中,加在c0w32後面已經不管用了,編譯會報另一個錯誤VCL.BPIW.OBJ不存在,Targets文件有很大變化,可能參數的位置變動過了,導致與其他參數混在一起,所以還是加到memmgr.lib處更加合理)。

一些組件包比如DevExpress的Package,沒有dproj或者cproj 項目文件,只能通過IDE進行轉換,但坑爹的是bpk在好幾個版本以前(CRS 2007?)已經不支持bpk項目,根本打不開也談不上轉換了,但它其實是一個make文件,可惜用make命令編譯還是要出錯,不想去研究了。總之,BCB永遠活在Delphi的陰影下。

4. Qt Creator 怎樣設置才能實現靜態編譯

qt默認的編譯方式是動態編譯的,但是有時候編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯程序,qt要實現靜態編譯必須庫文件也是靜態編譯的,可以用這個命令編譯靜態庫:
1.將c:\qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的qmake_lflags
=
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
改為
qmake_lflags
=
-static
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
2.在開始菜單里找到qt
command
prompt並運行,輸入命令:
configure
-static
-debug-and-release
-no-exceptions
-l
"c:\qt\2010.05\qt\include"
-l
"c:\qt\2010.05\qt\lib"
-l指定一下路徑,防止用到vc的頭文

5. cbuilder是什麼它與c++builder是一樣的嗎

沒有聽說過什麼c
builder
呀,
Borland
C++
Builder
是Borland
公司開發的用於C/C++開發的IDE(
集成開發環境

1、沒有聽說過c
builder
2、如果有的話應該是差不多的
IDE,IDE是
編譯器

解釋器
,編緝器等的集合體
3、按字面解釋的話,c
builder
應該只能編譯c語言,C++
Builder
有一款開發環境就是Borland
公司的Borland
C++
Builder
,可以編譯C/
C++語言

6. 如何編譯C/Fortran動態/靜態鏈接庫

首先,傳統的編譯,也就是靜態編譯是把 源文件 翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個庫文件中,這個就是靜態庫。比如常說的庫函數printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過靜態鏈接技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個閉包。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的動態庫,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,動態鏈接技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要動態鏈接庫。

7. 請問在c++builder中如何調用mingw編譯的.a靜態鏈接庫

在MakeFile中 把.a的路徑加到庫中就行了

8. c語言有靜態編譯嗎

你說的是庫吧,不是頭文件,頭文件沒關系,
如果要靜態編譯,使用gcc的話,只要加上-static選項就行了

9. 如何使用c builder

新建一個Console Application或者Console Wizard就可以調試C/C++程序了(無需保存工程,可以內存編譯),比VC++要簡單。

10. Borland C++ builder怎麼使用,用來編譯C++程序庫文件是iostream.h

看來,你是想用bcb學習c++,對吧,那麼 你不用深入學習bcb中的各個控制項了,只要運行bcb的 控制台程序就可以用c++了,實際上很多人用vc++學習c++,也是用vc++的控制台程序學習的。

你可以這樣做。

1、啟動bcb,bcb會自動生成一個form可視框架,既然你編寫控制台程序,你直接選擇 File菜單中的Close All,關閉它就行了。

2、打開File菜單,選擇New,然後選擇other,會彈出一個對話框,里邊很多選項,你選擇 console wizard即可,然後出現一個小對話框,默認使用c++語法,並且提示你輸入你要建立的 工程的目錄,也就是說你想把你編寫的程序放在哪個目錄下。你打勾special project source,然後在編輯框里輸入你要存放的目錄;去掉復選框的use VCL選擇,點擊ok即可。
3、在新的對話框中 選擇 create a new unit, 點擊ok;

4、現在就可以編寫代碼了。

例如: 你輸入

#include <iostream>
#include <conio.h>
using namespace std;

void main()
{
cout<<" ok"<<endl;

getch();

}
就可以運行了,注意:與vc++不同的是,bcb的控制台程序運行完後,dos窗口馬上結束,不會停頓,所以我一般加上getch();函數,等到你按下一個鍵才結束程序,用這個需要加上頭文件#include <conio.h>。

我說的很詳細了,給點分吧。以上回答適用於bcb6.0

熱點內容
18經驗起床的伺服器ip 發布:2024-11-01 12:30:15 瀏覽:39
這個鎖屏密碼是什麼 發布:2024-11-01 12:24:51 瀏覽:92
相機存儲卡排名 發布:2024-11-01 12:24:49 瀏覽:958
androidxml格式化 發布:2024-11-01 12:23:14 瀏覽:165
Vb6編譯是錯誤不知道錯誤代碼 發布:2024-11-01 12:16:23 瀏覽:159
區域網電腦訪問伺服器怎麼提速 發布:2024-11-01 12:14:09 瀏覽:322
美創資料庫 發布:2024-11-01 12:05:45 瀏覽:916
你改愛奇藝密碼什麼意思 發布:2024-11-01 12:04:48 瀏覽:408
矩陣分解python 發布:2024-11-01 11:58:23 瀏覽:367
如何查詢微信支付密碼修改記錄 發布:2024-11-01 11:51:57 瀏覽:206