.net core 调用c dll_C++ 调用C封装DLL库的两种方式

本文介绍了如何在.NET Core中调用C++动态链接库(DLL),通过创建C++动态库工程,编写头文件和源代码,展示了动态调用和静态调用两种方式。动态调用利用LoadLibrary和GetProcAddress实现,静态调用则通过pragma comment(lib)指令链接库文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写DLL代码

新建工程

新建空项目工程

f503947cb281ae2b839aacd83f185ba5.png

点击确定。然后右键项目选择新建项。

f1652bb298477c5e68712e3fb4afd668.png

出现下图,选择头文件。

dab0b03f1e52254494017fa4637f6a26.png

再次选择新建项,选中C++文件,将其改为MySocketClient.c,然后选择添加。

7f6c3bf5af4680870861d5c148209a89.png

到这里,新建工程就完成了。

ab825b6fd7e570baebe17e14a6facaa2.png

然后右键项目,选择属性 将配置类型改为动态库(.dll)

8e4228394219e6949b4982865fbb664b.png

编写头文件MySocketClient.h

#ifndef _INC_MYSOCKETCLIENT_H_

#define _INC_MYSOCKETCLIENT_H_

#define Import_SSS

#ifdef Import_SSS

#define API _declspec(dllexport)

#else

#define API _declspec(dllimport)

#endif

#ifdef _cplusplus//extern"C" 来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。

extern "C" {

#endif // _cplusplus

API//导出函数,让外界调用。

int socketClient_Init(void **handle);

API

int socketClient_Send(void *handle, unsigned char *buf, int buflen);

API

int socketClient_Recv(void *handle, unsigned char *buf, int *buflen);

API

int socketClient_Destory(void *handle);

#ifdef _cplusplus

}

#endif // _cplusplus

#endif //_INC_MYSOCKETCLIENT_H_

编写MySocketClient.c

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

#include "MySocketClient.h"

typedef struct _Sck_Handle

{

char version[16];

char ip[16];

int port;

unsigned char *p;

int len;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值