亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題

 更新時(shí)間:2023年08月02日 09:29:38   作者:Jeady5  
這篇文章主要介紹了C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/外部符號

話不多說,原因在于extern “C”{} 的添加位置, 小主犯得錯(cuò)誤是,C++ 中包含的C 的頭文件,沒有包含在 extern “C”{}的花括號,小主只把C++ 中的函數(shù)包含在了其中,把頭文件給忽略掉了。

錯(cuò)誤

#include "c_header.h"
extern "C"{
?? ?//...
}

正確

extern "C"{
#include "c_header.h" // 注意這行代碼的位置
?? ?//...
}

有沒有戳中你

關(guān)于“無法解析外部命令”的幾個(gè)常見原因

這次接手的項(xiàng)目中生成后遇到了類似問題,經(jīng)過參考排查發(fā)現(xiàn)外部C++文件中extern聲明的函數(shù)類型與原定義的函數(shù)類型不一致。但由于報(bào)錯(cuò)實(shí)在奇怪,我也是第一次遇到這種問題,花了整整兩天才將問題解決掉。

無法解析的外部符號的情況發(fā)生原因

1.沒有加入相應(yīng)lib庫文件.

2.類成員有聲明,但沒有定義.或者定義與聲明不符合.

3.沒有包含源文件.例如

extern int i;?
extern void g();
void f()
{
i++;
g();
}
int main()
{
}

4.符號定義在編譯為 C 程序的文件中,而符號是在 C++ 文件中不帶 extern "C" 修飾符聲明的。

在此情況下,請修改聲明,例如不是使用:

extern int i;
extern void g();

而使用:

extern "C" int i;
extern "C" void g();

同樣,如果在將由 C 程序使用的 C++ 文件中定義符號,請?jiān)诙x中使用 extern "C"。

5.符號定義為靜態(tài),但稍后在文件外部被引用。

沒有定義靜態(tài)類成員。例如,應(yīng)單獨(dú)定義下面類聲明中的成員變量 si:

#include <stdio.h>
struct X {
static int si;
};
// int X::si = 0; // uncomment this line to resolve
void main()
{?
? ? X *px = new X[2];?
? ? printf("/n%d",px[0].si); // LNK2019
}

6.調(diào)用的函數(shù)參數(shù)輸入不正確。2019

另外類出常見錯(cuò)誤:

cannot instantiate abstract class

一是繼承類沒有重寫純虛函數(shù),二是該類是抽象類

本次遇到的問題是最簡單的返回類型錯(cuò)誤,即在A.cpp中定義了形如:

QString B(DcmDataset* ds, const Tag &tag, QSqlQuery& query, const QString& str, const QVariant& Varient)
{
...
}

但在外部文件extern聲明的時(shí)候?qū)戝e(cuò)成:

extern void B(DcmDataset* ds, const Tag &tag, QSqlQuery& query, const QString& str, const QVariant& Varient);

由此導(dǎo)致,此問題在生成之前編譯器(vs2010)是找不出來的,在生成時(shí)報(bào)的錯(cuò)也很容易讓人摸不著頭腦。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言預(yù)處理詳解

    C語言預(yù)處理詳解

    這篇文章主要給大家介紹了關(guān)于C語言之預(yù)處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改(尾插尾刪)教程示例詳解

    C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改(尾插尾刪)教程示例詳解

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C語言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    C語言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++虛函數(shù)表和虛析構(gòu)介紹

    C++虛函數(shù)表和虛析構(gòu)介紹

    這篇文章主要介紹了C++虛函數(shù)表和虛析構(gòu),虛函數(shù)表是C++實(shí)現(xiàn)多態(tài)的基礎(chǔ),多態(tài)是面向?qū)ο蟮娜筇匦灾?,下面文章我們一起來看看詳?xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • linux之sort命令的用法

    linux之sort命令的用法

    sort將文件的每一行作為一個(gè)單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進(jìn)行比較,最后將他們按升序輸出
    2013-10-10
  • C語言中字符串與各數(shù)值類型之間的轉(zhuǎn)換方法

    C語言中字符串與各數(shù)值類型之間的轉(zhuǎn)換方法

    這篇文章主要介紹了C語言中字符串與各數(shù)值類型之間的轉(zhuǎn)換方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言實(shí)現(xiàn)排序算法之歸并排序詳解

    C語言實(shí)現(xiàn)排序算法之歸并排序詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)排序算法之歸并排序,對歸并排序的原理及實(shí)現(xiàn)過程做了非常詳細(xì)的解讀,需要的朋友可以參考下
    2014-07-07
  • C++并查集算法簡單詳解

    C++并查集算法簡單詳解

    大家好,本篇文章主要講的是C++并查集算法簡單詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Qt中QMapIterator檢測是否為空的實(shí)現(xiàn)

    Qt中QMapIterator檢測是否為空的實(shí)現(xiàn)

    本文主要介紹了Qt中QMapIterator檢測是否為空的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • C++?異常處理機(jī)制與自定義異常體系處理方式

    C++?異常處理機(jī)制與自定義異常體系處理方式

    本節(jié)將詳細(xì)介紹C++異常處理的相關(guān)概念、用法以及如何通過自定義異常體系來滿足程序的需求,同時(shí),我們將對比C語言的傳統(tǒng)錯(cuò)誤處理方式,分析C++異常機(jī)制的優(yōu)缺點(diǎn),并探討標(biāo)準(zhǔn)庫中提供的異常體系,幫助開發(fā)者更好地理解和使用C++的異常處理功能,感興趣的朋友一起看看吧
    2024-12-12

最新評論