真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言無法定位的外部函數(shù) c語言無法定位的外部函數(shù)怎么辦

c語言無法解析的外部符號?

請將schoolwork.c這個源文件添加入工程里,否則根本不會編譯到這個文件,只會編譯"源.cpp",然而"源.cpp"這個文件并沒有main函數(shù)。

在北關等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站建設、網(wǎng)站制作 網(wǎng)站設計制作按需定制設計,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,北關網(wǎng)站建設費用合理。

添加方法:

右鍵點擊“源文件”,在彈出菜單中選擇“添加”,在下級菜單中選擇“現(xiàn)有項”,此時出現(xiàn)文件瀏覽對話框

然后找到schoolwork.c,此后“源文件”這一欄里會出現(xiàn)schoolwork.c

再進行編譯即可。

C語言中顯示無法解析的外部命令?

這是因為c和c++混編帶來的問題。

1,問題根源:c++是支持類和名字空間,函數(shù)重載等高級技巧的。以函數(shù)重載為例:

int Add(int a, int b)

int Add(int a, int b, int c)

這意味著不同的函數(shù)有同樣的名字(你寫的,都叫Add),但是同樣的名字會帶來混淆,所以使用了一種叫“名字毀壞”的技術,不同的編譯器有不同的毀壞規(guī)則,只要能實現(xiàn)區(qū)分就好。

所以,經(jīng)過c++編譯器的處理,你的Add名字已經(jīng)面目全非,比如我這里叫:

錯誤 LNK2019 無法解析的外部符號 "int __fastcall Add(int,int)" (?Add@@YIHHH@Z),函數(shù) _main 中引用了該符號。

到這,都沒什么,只不過名字變了一下,只要編譯器能處理正確就好。

但是,重點來了,你放了一個c文件進去,c語言,是不支持這些高級玩意兒的,名字也不會毀壞,這樣,一個毀壞一個還是原名,得,兩下對不上了。

2,解決辦法

解決辦法也是模式化的,當你聲明的變量或者函數(shù)在c文件實現(xiàn)的時候,在h文件里聲明的時候,用這樣的結構包含起來,無論有多少個函數(shù),都可以放在一起。

#ifdef __cplusplus

extern "C" {

#endif

int Add(int, int);

//其他聲明

#ifdef __cplusplus

}

#endif

再編譯就不會出現(xiàn)Link錯誤了。

頭文件全文如下:

#pragma once

#ifdef __cplusplus

extern "C" {

#endif

int Add(int, int);

#ifdef __cplusplus

}

#endif

用c語言編程序,遇到無法解析的外部符號,求解決方法

使用cl編譯的時候,不會自動幫你鏈接常用的系統(tǒng)庫,所以,需要你手動指定需要的庫文件。指定庫文件時,可以使用參數(shù)/link 庫文件,也可以直接寫庫文件名。

MessageBox函數(shù)族(編譯器會根據(jù)字符集自動判斷是使用后綴是A還是W的函數(shù))在庫文件User32.lib中,加上就行了,命令行:

cl G:\1.c User32.lib

注意我的源文件是在G盤下的,內(nèi)容和你的一樣。編譯結果:

c語言外部函數(shù)無法成功運行為什么

你用VS2008吧,用它編譯的話,你這個能成功!

我問了一位高手,

講的是:“VC編譯器在編譯時不默認連接math.h函數(shù)”

它不屬于C運行庫,所以沒有默認鏈接

后來用了VS2008,發(fā)現(xiàn)成功了。


網(wǎng)頁題目:c語言無法定位的外部函數(shù) c語言無法定位的外部函數(shù)怎么辦
網(wǎng)站網(wǎng)址:http://weahome.cn/article/hjhhgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部