参考链接:http://www.voidcn.com/article/p-hwvwbvwu-xz.html
1、首先编写要注入的DLL文件:dllTest_dll.dll
只进行两个数的简单相加
#include "dllTest_dll.h"
int add(int x,int y)
{
return x+y;
}
DLL的头文件dllTest_dll.h
#ifndef LIB_H
#define LIB_H
// 这种声明方式是强制用c语言方式进行修饰,且用C的默认约定__cdecl方式。
// 这种方式编译产生的DLL中有一个导出函数:add,不加任何修饰。
extern "C" int __declspec(dllexport)add(int x,int y);
#endif
2、DLL文件的调用文件dllTest.cpp
// dllTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
typedef int (*lpAddFun)(int,int); // 函数声明 lpAddFun是一个指向函数的指针,该函数有两个参数都是int类型,函数的返回值也是int类型
// int *function(int,int)表示函数的两个参数都是int类型,函数的返回值是指向Int类型的指针;
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hDll; // DLL句柄
lpAddFun addFun; // 函数指针
//TCHAR tzPath[MAX_PATH];
hDll = LoadLibraryW(L"dllTest_dll.dll");// 如果不加L会报错 “LoadLibraryW”: 不能将参数 1 从“const char [16]”转换为“LPCWSTR”
//与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
if(hDll != NULL)
{
addFun = (lpAddFun)GetProcAddress(hDll,"a