vc6編譯鏈接
A. VC6編譯error LNK2001 _aligned_free在哪個靜態鏈接庫
按照意思來看,是你沒有給出這兩個函數的實現。。。你的PaFile.cpp文件中是否有這兩個函數的聲明?可以將游標移動到吶兩個函數聲明出按F1看看MSDN中有無說明;沒有的話,那就應該是第三方的類庫了
B. vc6寫書上的程序,編譯不報錯,無法執行。錯誤為執行Link.exe出錯
既然題主提出了這個問題,說明題主的編程語言理論嚴重缺乏。
在C/C++中,我們一般認為有兩個階段(其實有很多): 編譯和鏈接。而題主所提供的圖表示的是一種鏈接錯誤,而不是編譯錯誤。
編譯錯誤: 存在語法錯誤,缺少某個頭文件等很明顯的錯誤,如果編譯錯誤都不能解決,就說明寫代碼那個人水平極低。編譯主要是針對某個具體模塊的。
鏈接錯誤:鏈接是主要針對多個模塊而言的。這個理論太多。我就舉個例子來說明:地圖上的長城與實際的長城,我們平時說去長城玩兒,這個長城指的是「虛」的,可以認為是地圖上的長城;但是真正的去長城玩兒的時候,你總不能再地圖上玩兒吧,肯定是「實際上的」長城。
下面回歸正題:
你這個代碼很顯然是編譯通過的,那麼鏈接沒通過說明你的模塊之間存在問題。你的代碼中調用了AVC,AverageValue這幾個函數。但是你能指出這幾個函數具體是怎麼做的么?具體定義又在哪兒啊?用長城的例子來說明:你只是地圖上的長城,但是玩兒的時候必須到實際的長城去玩兒啊。
具體解決辦法:
自己寫出這幾個函數的定義代碼,然後將這幾個函數符號,放到調用地方的前面。
C. vc6.0,可以編譯和鏈接卻無法運行
在你的代碼的最後加入getchar();或者system("pause");
不是沒有安裝好~~~
試試吧~~~
假如一切正常,也會一閃而過,因為程序按你的代碼已經執行過了~~~
如果你想看到結果,讓窗口停留,就應加入一個使程序暫停的代碼:
1--getchar();
等待你輸入一個字元,輸入後窗口消失
2--system("pause");
系統命令
很正常,你用vs2005,vs2008,vs2010試試看都差不多的,與編繹器有關,通常你的代碼是正確的
D. 如何用vc6編譯ffmpeg,並單步調試
目前官方ffmpeg的最新版本為0.9, 我們就以此為例:
1. 下載最新git版本的源代碼(http://ffmpeg.zeranoe.com/builds/, 本例下載的是2011-12-12版本)
2. 放到MSYS環境里配置,生成config.h文件。mingw gcc是能順利編譯通過整個項目的,並生成最新版的ffmpeg。
3. 建立vc6工程,把相關代碼都加入到工程中。由於在vc生成的obj都在一個目錄下,所以需要修改文件名,讓其不重名。
4. 安裝intel compiler 11編譯器,單獨提取其icl.exe及相關include目錄,替換掉vc6自帶的cl.exe, 在工程設置里加上/Qstd=c99,用於支持C99語法。
5. 安裝intel compiler 10編譯器,單獨提取lib目錄,因為此版本調試庫的結構能完美支持vc6的調試信息。
6. 在vc6的options里設置include/exe/lib查找目錄,指向intel編譯器。
7. 開始修改代碼,添加C99的相關linux頭文件, 用於支持vc6, (unistd.h, stdint.h, inttypes.h, getopt.h)
8. 添加C99和linux的相關實現代碼,ffmpeg需要用到: getopt_long, strtoll, gettimeofday, atoll, usleep等
9. 修改windows的相關兼容代碼,GetWindowLongPtr -> GetWindowLong, GWLP_USERDATA
10. 去除硬體加速libavcodec代碼,和依賴庫代碼。選擇所需要的模塊,修改相關的allcodec.c, alldevices.c, allfilters.c, allformats.c
11. 加上鏈接庫,sdl.lib, winmm.lib, dxguid.lib, wsock32.lib
12. 在os_support.c里,把<winsock2.h>移動到文件最前面。
13. 如果是ffmpeg, 已經能順利編譯了。如果是ffplay,還需要編譯靜態sdl, 並鏈接。
14. 等等,音頻運行不正確?有雪花聲?因為還需要替換所有文件里的<math.h>為<mathimf.h>, 默認的rint等數學函數和gcc不兼容。
15. ok, 大功告成,純C版本完美運行。
16. 由於ffmpeg0.9在c文件里,添加了一些intel compiler不支持的mmx語法,所以編譯mmx/sse加速版本時,一小部分.c文件需要依賴mingw gcc編譯成.o文件,再通過vc6的lib.exe工具轉換成lib,讓vc6鏈接上。當然還要加上yasm編譯的很多匯編obj.
E. 用VC 6編程, 代碼都輸入正確 編譯後鏈接 為什麼還提示有一個error
你的工程包含的兩個源文件ceshi2.cpp 和 ceshi3.cpp
是否是分別包含了一個main主函數,這樣就會出錯,一個工程中只能有一個主函數,否則無法編譯鏈接運行;
代碼中有個錯誤,提醒你一下,n3 = n2 * n 這樣才是n cubed
建議你再新建一個工程,把兩個ceshi源文件分開運行
F. vc6編譯成功,但連接提示錯誤,提示
是啊,TC和VC用的庫不一樣,VC中沒有graphics.h這個頭文件。
所以,情將graphics.h所用到的功能,化成VC中的來實現。一個挑戰啊,你試試。
G. 為什麼我用VC6編譯動態鏈接庫不生成lib和exp文件
編譯動態鏈接庫生成的就是DLL,沒有EXE文件的
再看看別人怎麼說的。
H. vc6.0編譯、鏈接沒問題,執行時出現runtime error
該錯誤是由scanf語句導致的,x是整型變數,應該用%d,而不是%f;變數前面要加取地址符&,即
scanf("%d", &x);
改正後不再有上述錯誤提示,但並不能實現想要的數據排序功能。需要更正的地方有:
1)第7行,for語句中j改為i,即 for (i=0; i<10000; i++){
2)第17行,改為 for (i=0; i<num-1; i++){ (排序進行到最後一個數,必然是最大數,不需要做任何工作)
3)第20行,大於號改為小於號 ,即 if (a[j] <a[mini]){
4) 第28、29行改為
a[i]=a[mini] ;
a[mini] = tmp;
5)第34行,數組輸出從第0個開始,即 for (i=0; i<num; i++){
這樣應該可以實現輸入數據,從小到大排序,輸出
I. 為什麼我用VC6編譯動態鏈接庫不生成lib和exp文件
還需要定義def文件,並把它加到工程中
def格式如下
LIBRARY "DLL文件名"
EXPORTS
需導出的函數名稱 @1
J. 易語言5.0的靜態編譯中的VC6鏈接器咋弄啊
到易語言論壇下載了靜態編譯VC6連接器,你把vc6鏈接器解壓到易語言安裝的目錄里得到VC98linker文件夾。 再打開VC98linker文件夾,裡面有link易語言源碼,你打開運行點擊修改。它會自動幫你配置好的。
靜態編譯VC6連接器下載地址:
http://bbs.eyuyan.com/read.php?tid=202913