VS2015如何调试自己写的DLL

准备环境:

VS2015

系统:

Win10


1、首先用VS2015创建一个DLL

VS2015如何调试自己写的DLL_第1张图片

2、在DLLmain.cpp代码如下:

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include 
extern"C"   // 以C语言的方式导出一个函数
_declspec(dllexport)  // 用于声明一个函数会被导出

int fun()             //随便创建一个函数
{
    return MessageBox(0, L"HelloWorld", 0, 0);
}


// 模块句柄 , 模块加载基址 
BOOL APIENTRY DllMain(HMODULE hModule,                         // DLL被加载到的内存地址
    DWORD  ul_reason_for_call,             //DllMain被调用的原因 
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH: // 进程创建时被调用
        MessageBox(0, L"进程创建时被调用", L"DllMain", 0);
        break;
    case DLL_THREAD_ATTACH:  // 线程创建时被调用
        MessageBox(0, L"线程创建时被调用", L"DllMain", 0);
        break;
    case DLL_THREAD_DETACH:  // 线程退出时被调用
        MessageBox(0, L"线程退出时被调用", L"DllMain", 0);
        break;
    case DLL_PROCESS_DETACH: // 进程退出时被调用
        MessageBox(0, L"进程退出时被调用", L"DllMain", 0);
        break;
    }
    return TRUE;
}

2、1:分别看看C语言跟C++导出方式

第一种是C语言的

VS2015如何调试自己写的DLL_第2张图片

第二种是C++的名称粉碎机制

VS2015如何调试自己写的DLL_第3张图片

3、创建一个控制台程序调用DLL

// RunDll.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
typedef int(*fnFun)(); // 定义函数指针类型
int main()
{
	// 1. 显式链接
	//1.1 加载DLL
	// hDll : DLL的加载基址
	HMODULE hDll = LoadLibrary(L"test.dll");

	fnFun pfnFun = nullptr; // 函数指针类型的变量
							// 1.2 获取DLL中的函数的地址
	pfnFun = (fnFun)GetProcAddress(hDll, "fun");
	// 1.3 调用函数
	pfnFun();

	//1.4 释放DLL
	FreeLibrary(hDll);
	return 0;
}

4、如何调试自己写的DLL

右键属性->调试->命令

VS2015如何调试自己写的DLL_第4张图片

VS2015如何调试自己写的DLL_第5张图片

VS2015如何调试自己写的DLL_第6张图片

你可能感兴趣的:(C++)