• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            C++程序中出現undefined reference to ......

            Posted on 2019-02-26 16:28 Prayer 閱讀(718) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX

            在C++代碼中調用C的庫文件,需加上extern "C",用來告知編譯器:這是一個用C寫成的庫文件,請用C的方式連接他們。

            Undefined reference to 錯誤:這類錯誤是在連接過程中出現的,可能有兩種原因∶

            一是使用者自己定義的函數或者全局變量所在源代碼文件,沒有被編譯、連接,或者干脆還沒有定義,這 需要使用者根據實際情況修改源程序,給出全局變量或者函數的定義體;

            1) 可以頭文件中類加上

              #ifndef xxx_H
              #define xxx_H

              namespace xxx{

              };

              #endif

              cpp文件中包含頭文件,using namespace xxx; 或者 其他訪問方式(自行百度namepace 使用方法)

            2)若全局 namespace xxx 被class xxx 覆蓋,請加上::

            3) 請注意原來的makefile文件是否包含新增的文件,并且邏輯包含關系正確。

            二是未定義的符號是一個標準的庫函數,在源程序中使用了該庫函數,而連接過程中還沒有 給定相應的函數庫的名稱,或者是該檔案庫的目錄名稱有問題.

               在使用廠商新提供的庫文件時,遇到了新問題,庫中的函數程序不識別,同樣的方法在使用以前的庫時是可行的,在CSDN上求助并查閱一些資料后,問題已經解決。
            1)使用庫的時候首先要明確庫(或者頭文件)是用什么編寫的,如果是用C++編寫的,那么在MFC中可以直接使用,如果是用c編寫的,那么在#include頭文件的時候要加上
            extern “C”{
            #include “OOXX.h”
            }
            注意格式換行要正確。
            2)為什么要如1)中那樣操作呢,因為在c++中編譯的方法和c不用,這是由于函數的重載造成的。在c中不涉及重載,如函數func(int a,float b)編譯成_func.在c++中涉及重載,如果只憑函數名是不足以判斷是使用的哪個函數,所以編譯的時候要加上變量,如函數func(int a,float b)編譯成_func_int_float,這樣不但確定了函數名,還確定了使用哪中重載。正式由于以上的不同,使得c中編的函數不能在c++中直接使 用,c++中為了兼容c的代碼,提出了extern “C”的方法,在編譯聲明了extern “C”的函數函數時,會按照c語言的方法編譯。
            如果不加extern “C”,在編譯的時候會出現link錯誤:error link 2001:unresolved extern symbol “long __stdcall func(int a,float b)@QDASCFQAE@”之類的錯誤,說明編譯器沒有識別出函數func

            久久亚洲欧美日本精品| 无码八A片人妻少妇久久| 久久综合久久自在自线精品自| 久久婷婷人人澡人人爽人人爱| 久久人人爽人人爽人人片AV东京热| 亚洲AV日韩精品久久久久| 久久久久国产精品| 久久天天躁狠狠躁夜夜2020一| av无码久久久久久不卡网站 | 久久人人超碰精品CAOPOREN| 精品久久久久成人码免费动漫| 99久久99久久精品免费看蜜桃| 久久久久亚洲AV无码专区网站| 久久精品无码午夜福利理论片| 精品久久久久久99人妻| 久久99亚洲网美利坚合众国| 午夜精品久久久久久久无码| 丁香久久婷婷国产午夜视频| 久久九九精品99国产精品| 亚洲伊人久久成综合人影院 | 亚洲精品美女久久久久99小说| 久久久国产乱子伦精品作者| 久久久久青草线蕉综合超碰 | 奇米影视7777久久精品人人爽| 久久久久久免费一区二区三区| 久久青青草原亚洲av无码app| 一本一本久久a久久精品综合麻豆| 久久国产乱子精品免费女| 久久男人Av资源网站无码软件| 亚洲国产日韩欧美久久| 久久亚洲中文字幕精品一区| 国内精品久久久久国产盗摄| 精品久久一区二区| 99久久精品免费看国产一区二区三区| 国产精品九九久久免费视频 | 色狠狠久久AV五月综合| 国产免费久久精品99re丫y| 久久成人小视频| 久久天天躁夜夜躁狠狠躁2022| 香蕉久久久久久狠狠色| 久久精品国产亚洲av麻豆蜜芽 |