• <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>
            posts - 2,  comments - 25,  trackbacks - 0
                最近做一個項目,其中用到封裝的一個動態庫(lib+dll),其頭文件定義導出類型為 :
            #ifdef NetLink
            #define NETDIR __declspec(dllexport)
            #else
            #define NETDIR __declspec(dllimport)
            #endif

            NETDIR 
            void LinkDir();
            此動態庫編譯、使用均沒有任何問題。但是,某人突發奇想,能否將動態庫轉成靜態庫?

            于是,首先嘗試在代碼上不加任何修改,只在Visual Studio中將編譯選項改成“靜態庫lib”方式,結果在引用的工程中編譯失敗,報 error LNK2019: 無法解析的外部符號錯誤。

            難道是由于之前建立工程時選擇的是動態庫方式,因此不行?于是嘗試重建工程,選擇靜態庫方式,并將代碼整體移植。結果報錯依舊。

            上網搜索一番,有些思路,再次嘗試將頭文件定義成如下形式:
            #ifdef NetLink
            #define NETDIR extern "C" __declspec(dllexport)
            #else
            #define NETDIR extern "C" __declspec(dllimport)
            #endif

            NETDIR 
            void LinkDir();
            完成后,編譯引用工程,錯誤信息有些變化,之前的很多亂碼符號似的信息變成 error LNK2019: 無法解析的外部符號錯誤 “_imp_LinkDir()”。但還是無法通過編譯。

            最終頭文件改成
            #define NETDIR extern "C" 
            NETDIR 
            void LinkDir();

            編譯通過。

            總結出來:
            靜態庫方式定義導出函數只需在前面加上extern "C"即可!
            呵呵,小記一篇,高手直接忽略。

            posted on 2011-07-12 21:49 三夏健 閱讀(4882) 評論(22)  編輯 收藏 引用 所屬分類: C++
            久久乐国产精品亚洲综合| 久久综合视频网站| 久久国产影院| 青青草原综合久久| 久久国产精品99久久久久久老狼| 久久精品国产秦先生| 综合久久给合久久狠狠狠97色 | 久久久久亚洲AV成人网| 精品国产一区二区三区久久久狼| 久久亚洲高清观看| 色综合久久最新中文字幕| 99久久无码一区人妻a黑| 亚洲日本va中文字幕久久| 性欧美丰满熟妇XXXX性久久久 | 久久精品中文字幕第23页| 国产∨亚洲V天堂无码久久久| 久久精品无码一区二区WWW| 久久青青草原精品国产软件| 精品久久久久久国产三级| 亚洲精品成人久久久| 中文字幕久久波多野结衣av| 国产精品9999久久久久| 国产精品热久久无码av| 伊人情人综合成人久久网小说| 综合久久一区二区三区 | 久久亚洲日韩精品一区二区三区| 亚洲精品国精品久久99热一| 亚洲国产另类久久久精品| 国产精品久久久福利| 久久午夜无码鲁丝片午夜精品| 性高朝久久久久久久久久| 色妞色综合久久夜夜| 久久er国产精品免费观看2| 色婷婷综合久久久久中文字幕| 久久精品国产网红主播| 久久国产成人| 国内精品伊人久久久久AV影院| 久久久久国产精品麻豆AR影院 | 精品久久久久久久无码| 九九久久99综合一区二区| 欧美久久久久久|