VS2017打包C++的DLL动态库动态库并调用

VS2017打包C++的DLL动态库动态库并调用

如图:创建一个DLL的的动态链接库
在这里插入图片描述

然后,添加一个头文件myDll.h
在这里插入图片描述

在myDll.h中添加一句话,需要引出的函数,都要添加到这里,因为我的例子比较简单,只有一个函数,所以只添加一个。
在这里插入图片描述

然后在cpp中正常写代码。
在这里插入图片描述

#include "pch.h"
#include "myDll.h"
#include <stdio.h>
#include <string.h>
#include <tchar.h>

TCHAR* DemoAdd(TCHAR *a) {
	TCHAR b1[] = _TEXT("bcd");
	TCHAR *b = b1;
	int len_a = wcslen(a);
	int len_b = wcslen(b);
	TCHAR* c = new TCHAR[len_a + len_b + 1];
	c[0] = _T('\0');
	wcscat(c, a);
	wcscat(c, b);
	//std::wcout << c << std::endl;
	return c;
}

然后点击生成解决方案,没有报错后,到目录下查看,因为我是在debugx64下运行的,所以我的文件就在debugx64内,看到生成的dll文件。证明生成dll成功。
在这里插入图片描述

创建一个控制台程序,如图:
在这里插入图片描述

然后将dll文件复制到新建项目的cpp同目录下
在这里插入图片描述

然后打开项目,在cpp中写下如下代码:

#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <string.h>
#include <tchar.h>

using namespace std;
typedef TCHAR*(*_DemoAdd)(TCHAR *a);//申明那个函数的类型;
HMODULE hm = LoadLibrary(L"MakeDllTest2.dll");//找到对应dll;

int main()
{
    std::cout << "Hello World!\n";
	string output;
	if (hm != NULL) {
		_DemoAdd DemoAdd = (_DemoAdd)GetProcAddress(hm, "DemoAdd");
		TCHAR a1[] = _TEXT("this is ");
		TCHAR *a = a1;
		wcout << a << endl;
		TCHAR* k = DemoAdd(a);
		wcout << k;
	}
}

typedef TCHAR*(*_DemoAdd)(TCHAR *a);//申明那个函数的类型;
这句代码表示导入dll中的函数,跟之前dll中的申明一样,需要引入几个就写几个。运行代码,查看结果。
在这里插入图片描述

如图,拼接了一个字符串,成功返回结果。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值