.cpp:
cpp
#include "FileName.h"
#include <iostream>
class FHello :public IInterface {
public:
FHello();
virtual void Init() ;
virtual void destory() ;
virtual void* getname() ;
private:
char Name[1024];
};
FHello::FHello() {
memset(Name, 0, 1024);
strcpy(Name, "Hello\n");
}
void FHello::Init() {
printf("FHello:Init\n");
}
void FHello::destory() {
printf("FHello:des\n");
}
void *FHello::getname() {
return Name;
}
IInterface* IInterface::CreateInterface() {
return new FHello();
}
.h:
cpp
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#ifndef INTERFACE_H
//这是防止头文件重复包含的方式。如果 INTERFACE_H 没有被定义,那么定义它并包含以下代码。否则,跳过这些代码。
#define INTERFACE_H
#define FENGZHUANGCPP_API __declspec(dllexport)
//这个宏定义用于指示函数或类的导出。在 Windows 平台上,__declspec(dllexport) 指示编译器导出函数或类,使其可以被其他模块或程序使用。
class FENGZHUANGCPP_API IInterface {
//动态链接库
//静态链接库
public:
static IInterface* CreateInterface();
virtual void Init() = 0;
virtual void destory() = 0;
virtual void* getname() = 0;
};
#endif // !INTERFACE_H
//结束 #ifndef 预处理指令的范围。
__declspec(dllexport) 用于导出类和函数,__declspec(dllimport) 用于导入类和函数。
生成dll以及lib需在项目属性->general里面修改configuration type(VS)。
在vs中想要使用别人的dll或lib的话也需要在项目属性->VC++directiories里修改library directories
所使用的CPP:
cpp
#include "dlllib/FileName.H" // 包含头文件,头文件中定义了 IInterface 接口
#include <iostream> // 包含标准输入输出流库
#pragma comment(lib, "SNAKE2.lib") // 链接 SNAKE2.lib 库文件,这个库中应该包含 IInterface 的实现
using namespace std; // 使用标准命名空间
int main() {
IInterface *IF = IInterface::CreateInterface(); // 创建接口实例
cout << IF->getname() << endl; // 输出接口实例的名称
IF->Init(); // 初始化接口实例
IF->destory(); // 销毁接口实例
return 0;
}