參考: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.成功
