国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

VS 鏈接問題 warning C4273: dll 鏈接不一致

這篇具有很好參考價值的文章主要介紹了VS 鏈接問題 warning C4273: dll 鏈接不一致。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

VS 鏈接問題 warning C4273: dll 鏈接不一致

今天使用 VS2015 編譯程序,突然發(fā)現(xiàn)一個鏈接問題

warning C4273: dll 鏈接不一致

查了一下,原來這是由于 Windows DLL 動態(tài)庫的導(dǎo)入導(dǎo)出不匹配造成的。在使用 VS2015 編寫 DLL 程序時,頭文件中必須使用 __declspec 進(jìn)行聲明: 在提供者那里方法應(yīng)該被聲明為 __declspec(dllexport),在使用者那里方法應(yīng)該被聲明為 __declspec(dllimport) 。當(dāng)然 Linux 中沒有這個問題。

造成這個告警的原因是:生成 DLL 時只使用了 __declspec(dllexport) ,但在調(diào)用時未使用 __declspec(dllimport) 進(jìn)行聲明:

  • __declspec(dllexport) 導(dǎo)出庫文件標(biāo)志,沒有這個標(biāo)志,無法生成 *.lib 文件,只能在庫文件本身的工程中使用。
  • __declspec(dllimport) 導(dǎo)入庫文件標(biāo)志,給外部調(diào)用者使用的,沒有這個標(biāo)志,外部調(diào)用者會找不到庫文件中指定的符號。

所以經(jīng)常可以在 Windows DLL 的頭文件中看到如下宏定義,就是為例解決這個問題的

#ifdef _WIN32
#ifdef LIBRARY_EXPORTS
#define API_EXPORTS __declspec(dllexport)
#else
#define API_EXPORTS __declspec(dllimport)
#endif
#else
#define API_EXPORTS
#endif

class API_EXPORTS ClassName {
    // ...
};

在 Windows 中,DLL 生成方需要定義 LIBRARY_EXPORTS 宏,而 DLL 調(diào)用方則不需要定義這個宏,這樣就可以解決生成方和調(diào)用方導(dǎo)出和導(dǎo)入的問題。在 Linux 中,這個宏定義沒有任何作用。

當(dāng)然,若是以 C 語言的形式導(dǎo)出 API,還需要 extern "C" 進(jìn)行聲明,如下所示

extern "C" API_EXPORTS unsigned long long fibonacci(const int n);

參考資料文章來源地址http://www.zghlxwxcb.cn/news/detail-404090.html

  1. Walkthrough: Create and use your own Dynamic Link Library (C++)

到了這里,關(guān)于VS 鏈接問題 warning C4273: dll 鏈接不一致的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • QT運(yùn)行exe遇到Qt5Core.dll等dll文件缺失及無法定位程序輸入點(diǎn)于動態(tài)鏈接庫問題解決方法

    QT運(yùn)行exe遇到Qt5Core.dll等dll文件缺失及無法定位程序輸入點(diǎn)于動態(tài)鏈接庫問題解決方法

    QT運(yùn)行exe相關(guān)問題解決方法, 保姆級 ,親測有效! 如果運(yùn)行exe文件出現(xiàn)的問題如下圖所示,這是由于安裝路徑缺失相應(yīng)的dll導(dǎo)致的。(其他dll文件缺失解決方法同理) 解決方法: 在自己下載下來的文件中尋找相應(yīng)的dll文件并復(fù)制到安裝路徑中。以我自己為例: 在上圖的路

    2024年02月17日
    瀏覽(23)
  • OpenCV(vs)安裝與配置環(huán)境,以及找不到opencv_world460.dll的問題

    OpenCV(vs)安裝與配置環(huán)境,以及找不到opencv_world460.dll的問題

    目錄 一、opencv官網(wǎng)下載 二、配置 1.vs新建一個C++項(xiàng)目 ?編輯? ?2. 找到屬性管理器 ?3. 開始添加 ?4. 測試 三、關(guān)于找不到opencv_world460.dll(或者其他版本)的問題 官網(wǎng)下載地址: https://opencv.org/releases/ 解決方案配置選擇Release,解決方案平臺選擇x64 vs2019版本步驟:視圖---其他窗

    2024年02月09日
    瀏覽(69)
  • 動態(tài)鏈接庫dll詳解

    動態(tài)鏈接庫dll詳解

    ? ? DLL就是整個Windows操作系統(tǒng)的基礎(chǔ)。動態(tài)鏈接庫不能直接運(yùn)行,也不能接收消息他們是一些獨(dú)立的文件。 ? ? Windows API中的所有函數(shù)都包含在DLL中。 ? ? 其中有三個最重要的DLL ? ? kernel32.dll ,它包含用于管理內(nèi)存、線程和進(jìn)程的各個函數(shù); ? ? User32.dll ,它包含用于執(zhí)行

    2024年02月06日
    瀏覽(24)
  • Python調(diào)用動態(tài)鏈接庫(DLL)

    Python調(diào)用動態(tài)鏈接庫(DLL) 動態(tài)鏈接庫(Dynamic Link Libraries,簡稱DLL)是一種被多個程序共享的庫文件,可以被用于將程序分解為小模塊,減少內(nèi)存占用,加快程序運(yùn)行速度。而Python作為一種高級編程語言,可以方便地調(diào)用外部的DLL文件。 在Python中,可以使用ctypes模塊來調(diào)用

    2024年02月13日
    瀏覽(20)
  • LabVIEW調(diào)用動態(tài)鏈接庫DLL

    LabVIEW調(diào)用動態(tài)鏈接庫DLL

    LabVIEW調(diào)用動態(tài)鏈接庫DLL 要調(diào)用DLL,首先必須確定該庫是C/?C?++?DLL還是Microsoft?.NET?Assembly?/?.NET?DLL。 若要確定具有哪種類型的庫,可以檢查DLL文件的可移植可執(zhí)行(PE)標(biāo)頭。 DLL 是 C/?C?++?DLL : 1.???????如果沒有頭文件,請查找頭文件(*?.h)或函數(shù)原型定義,請?zhí)?/p>

    2024年02月03日
    瀏覽(22)
  • 如何查看.dll文件函數(shù)接口?(DLL動態(tài)鏈接庫)(查看動態(tài)鏈接庫、查看接口、查看函數(shù))(Visual Studio的dumpbin工具)(Dependency Walker)

    如何查看.dll文件函數(shù)接口?(DLL動態(tài)鏈接庫)(查看動態(tài)鏈接庫、查看接口、查看函數(shù))(Visual Studio的dumpbin工具)(Dependency Walker)

    查看DLL(動態(tài)鏈接庫)文件的接口,通常需要使用一些專門的工具。這里有兩個比較常見的方法: Dependency Walker 使用Dependency Walker:Dependency Walker是一個免費(fèi)的實(shí)用工具,可以列出DLL文件中的所有導(dǎo)出函數(shù)以及它們可能依賴的其他DLL。只需在Dependency Walker中打開想查看的DLL文件

    2024年02月08日
    瀏覽(20)
  • Java JNA調(diào)用dll動態(tài)鏈接庫

    Java JNA調(diào)用dll動態(tài)鏈接庫

    記錄學(xué)習(xí)內(nèi)容 C編譯dll環(huán)境: ? ? ? ? IDE:Clion ? ? ? ? ToolChains:MinGW64 Java環(huán)境: ? ? ? ? 版本:jdk1.8 64位 ? ? ? ? JNA依賴版本:5.2.0 (可根據(jù)需要升級,本文以此版本為例) JNA(Java Native Access )提供一組Java工具類用于在運(yùn)行期間動態(tài)訪問系統(tǒng)本地庫(native library:如W

    2024年02月12日
    瀏覽(13)
  • 【已解決】Ubuntu 20.04 編譯OpenCV 動態(tài)鏈接庫指向版本不一致導(dǎo)致出錯

    【已解決】Ubuntu 20.04 編譯OpenCV 動態(tài)鏈接庫指向版本不一致導(dǎo)致出錯

    問題:編譯OpenCV 4.8.1, 顯示出錯: /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_uint32@LIBFFI_BASE_7.0\\\' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_sint32@LIBFFI_BASE_7.0\\\' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to

    2024年02月04日
    瀏覽(35)
  • Rust:使用libloader調(diào)用動態(tài)鏈接庫 (DLL)

    掘金為同人創(chuàng)作:掘金 最近需要使用Rust 動態(tài)調(diào)用 動態(tài)鏈接庫,本來打算是使用 libloading 的,但是 libloading 在調(diào)用dll中的函數(shù)的時,是必須要在編譯時確定參數(shù)和return的類型的。但后來發(fā)現(xiàn)了 libloader 這個包包, libloader 是基于 libloading 的,但是操作起來卻比 libloader 方便。

    2023年04月10日
    瀏覽(49)
  • [python] 羅技動態(tài)鏈接驅(qū)動庫DLL 控制 鍵鼠

    [python] 羅技動態(tài)鏈接驅(qū)動庫DLL 控制 鍵鼠

    最近在玩搬磚游戲晶核, 每天有很多重復(fù)繁瑣的\\\"打卡\\\"操作, 得知隔壁御三家游戲就有大佬做了自動收割的輔助工具,我就想模仿寫一個. 不過大佬們寫的開源工具厲害得多,加了神經(jīng)網(wǎng)絡(luò)自動識別,實(shí)現(xiàn)尋路和點(diǎn)擊功能.我目前最多就是實(shí)現(xiàn)一個簡單連點(diǎn)器加色塊識別而已,而且這種

    2024年02月19日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包