我是靠谱客的博主 英勇蜗牛,最近开发中收集的这篇文章主要介绍c++ 创建并调用dll,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,生成dll 并调用

1 新建工程

2 Copy 生成的dll 到工程根目录/dll生成到这个目录

3 Copy生成dll的头文件到工程根目录

4 新建工程cpp中添加生成dll的头文件

5, 添加对应的lib文件,否则无法解析

可以考虑这种方式

#pragma comment(lib,"Simpledll.lib")

或者在调用dll工程的属性里添加 

**********************************************************

 

 

Calcuate.h

 

#pragma once
#define _DLLEXPORT __declspec(dllexport)
//open background music
#include<windows.h>
#include <mmsystem.h>
#include<dsound.h>
#pragma comment(lib, "WINMM.LIB")
//Michael Wang 20171027

extern  __declspec(dllexport) int calAdd(int a, int b);

__declspec(dllexport) double calSubtract(double a, double b);

__declspec(dllexport)
void printPoem();

_DLLEXPORT
void openBackGroundMusic();

_DLLEXPORT
void closeBackGroundMusic();

 

 

 Calcuate.cpp

 

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>
#include "Calcuate.h"

using namespace std;


int calAdd(int a, int b)
{
	int c = a + b;
	return c;
}

double calSubtract(double a, double b)
{
	double result  = a - b;
	return result;

}

void openBackGroundMusic()
{

	//这一行是打开音频,你要播放音频肯定要先打开文件的,并将其命名为mysong.
	mciSendString(TEXT("open ButterflyLovers.mp3 alias mysong"), NULL, 0, NULL);
	mciSendString(TEXT("play mysong repeat"), NULL, 0, NULL);//打开报警音

}

void closeBackGroundMusic()
{
	Sleep(5000);
	mciSendString(TEXT("close mysong"), NULL, 0, NULL);
}


void printPoem()
{
	char str[] = "How do I love thee? Let me count the ways.n
						吾爱汝深深几许?今且听吾细数之
						I love thee to the depth and breadth and heightn
						欲言情深深似海,欲状情厚更无垠
						My soul can reach, when feeling out of sightn
						此心幽幽不可名,此情切切绕魂灵
						For the ends of Being and ideal Grace.n
						奉祷三生冀神佑,执手一诺许终生
						I love thee to the level of everyday'sn
						思君不见日难度,柔情入盏饮朝暮
						Most quiet need, by sun and candlelight.n
						于昼不可无金乌,是夜岂能少龙烛
						I love thee freely, as men strive for Right;n
						吾心真率无犹疑,坦若君子承浩气
						I love thee purely, as they turn from Praise.n
						吾爱纯粹无污秽,洁如赞歌携颂回
						I love thee with the passion put to usen
						此情灼灼如烈焰,为汝独燃无余烬
						In my old griefs, and with my childhood's faith.n
						倘若迟暮生悲痛,梦归童乡拾彼心
						I love thee with a love I seemed to losen
						曾疑应舍白头意,仿若迷徒失圣心
						With my lost saints, --I love thee with the breath,n
						而今终得汝相惜,一呼一吸两相系
						Smiles, tears, of all my life!--and, if God choose,n
						焕彩重描笑与泪,生生世世不相离
						I shall but love thee better after death.n
						死后神明若问起,有过之而无不及n";
	//cout << str << endl;

	
		char s[3] = { 0 };
		char over[] = "。";  //中文的句号字符串
		cout << endl << endl << "    ";
		//逐个输出汉字
		for (int k = 0; k < strlen(str); k += 2)
		{
			printf("%c%c", str[k], str[k + 1]);  //每两个字符表示一个汉字

			if (k < 200)
			{
				Sleep(300-k);
			}
			else
			{
				Sleep(50);
			}
			

			sprintf(s, "%c%c", str[k], str[k + 1]);  //把一个中文的字符转化存到s中
			//sprintf_s(s, "%c%c", my[k], my[k + 1]);
			if (strcmp(s, over) == 0)  //字符串对比是否是句号,如果是则换行
			{
				printf("n");
			}
		}
	

}

activeateDLL.cpp

#include <iostream>
#include "Calcuate.h"

using namespace std;

void main()
{

	int a = 10;
	int b = 100;
	int c = calAdd(a, b);
	cout << "c is " << c << endl;

	cout << "--------------------------" << endl;

	double a1 = 10.1, b1 = 100.10;
	double c1 = calSubtract(a1, b1);
	cout << c1 << endl;
	//cout << calAdd(10, 100);

	
	openBackGroundMusic();
	cout << "tt这是英国诗人伊丽莎白·芭蕾特·布朗宁的诗n"
		<< "tttHow do I love theen" << endl;
	printPoem();
	closeBackGroundMusic();

	system("pause");

}
**********************************************************

 

二,可以参考 vs2010下动态库的创建及调用

三,为了方便可以把生成dll和调用dll的工程都写在一个项目里面,

1,用哪个只需要设置哪个为启动项即可

2,可以在一个工程上新建另一个工程

3,两个写到一起便于调试

 

4,可以把生成的调用的通过下面的方式关联起来,便于调式。

不然,即使将生成的dll放置调用的工程下面,每次修改后最要重新生成dll,再调用。

如果像下面这样关联起来,修改后就直接变化了在调用的工程中。

 

四,如果新建的工程是exe,也可以修改为生成dll

 

 

 

 

 

 

 

 

 

 

最后

以上就是英勇蜗牛为你收集整理的c++ 创建并调用dll的全部内容,希望文章能够帮你解决c++ 创建并调用dll所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部