C++編寫 動態鏈接庫dll 和 調用dll


參考:https://jingyan.baidu.com/article/ff42efa92c49cfc19e2202fd.html   

和htps://jingyan.baidu.com/article/ff411625c7e60812e48237d5.html

和https://blog.csdn.net/baidu_30174103/article/details/80514925

一、首先遇到了VS2015一新建項目就出現未將對象引用設置到對象的實例的問題,參考:https://www.zhihu.com/question/37119592?sort=created 折騰半天,包括  打開--C:\Users\用戶名\AppData\Local\Microsoft\VisualStudio\,然后把文件全部刪了  也沒解決。

VS2017-工具-導入和導出設置-重置所有選項 -重置為C++ 環境   依舊不行。

最后,參考:https://www.itsvse.com/thread-4221-1-1.html 用以下辦法,解決了問題。

 1、通過命令提示行工具進入VS安裝目錄下的Common7\IDE

2、執行devenv.exe /setup /resetuserdata /resetsettings

3、重啟VS

二、正式編寫DLL

1、VS2017     -    visual C++   -  windows桌面  -  動態鏈接庫(DLL)  ,名稱為Dll

2、在Dll.cpp中寫以下代碼

// Dll.cpp : 定義 DLL 應用程序的導出函數。
//

#include "stdafx.h"

extern "C" __declspec(dllexport) int __stdcall ADD(int a, int b) {
    return a + b;
}

3、編譯,成功。

4、找到VS自帶的dumpbin,並加入到環境變量中。執行:dumpbin Dll.dll    ,結果沒有看到函數名。

三、參考https://blog.csdn.net/Call_Coder/article/details/79331686 重新開始

1、Visual C++->Windows桌面->動態鏈接庫DLL->起名字為first

2, 右側 頭文件->添加->新建項         ,選擇頭文件,起名字為first

3, 打開first.cpp源文件,內容改為:

// first.cpp : 定義 DLL 應用程序的導出函數。
//
#include "stdafx.h"
#include "first.h"
#include <Windows.h>
#include <iostream>
using namespace std;
void show(void)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
    cout << "";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
    cout << "";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
    cout << ",";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
    cout << "";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
    cout << "";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
    cout << "";
}

4、將first.h 頭文件改為

#pragma once

__declspec(dllexport) void show(void);

5、生成解決方案。再次用dumpbin查看,和前面的一樣?繼續吧

6、新建一個C++控制台項目 test  ,把剛才的first.h和first.lib都復制到test的項目文件夾里,把first.dll放到最外邊的那個Debug文件夾里

7, 在項目->屬性->C/C++->代碼生成->運行庫->改成DLL(/MDd)然后,在右側解決方案中的頭文件中添加first.h 資源文件中添加first.lib

8、在test.cpp中寫

#include "stdafx.h"
#include "first.h"
 
int main()
{
    show();
    while (true)
    {
 
    }
    return 0;
}

重新生成解決方案,運行test.exe.成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM