go语言调用c指针接口,golang调用c实现的dll接口细节分享

本文详细介绍了如何使用 Golang 调用 C 实现的 DLL 功能,包括值传递、参数传递、指针使用等,并通过示例展示了调用过程。重点讨论了指针传递在修改参数值时的重要性,以及 Golang 中调用 C 接口的三种方法。

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

目的

本篇文章主要介绍golang在调用c实现的dll时,具体的一些方式。比如值传递、参数传递、指针等等的一些使用。

一、dll的代码

c实现的dll代码:

hello.h

#ifndef _HELLO_H_

#define _HELLO_H_

#include

#define HELLO_EXPORTS

#ifdef HELLO_EXPORTS

#define EXPORTS_API extern "C" __declspec(dllexport)

#else

#define EXPORTS_API extern "C" __declspec(dllimport)

#endif // HELLO_EXPORTS

EXPORTS_API int add(int left, int right);

EXPORTS_API void show(char* ptr, int nLen);

EXPORTS_API char* change(char* ptr, int nLen);

EXPORTS_API void callByReference(int& nLen);

EXPORTS_API void callByPtr(int* nLen);

#endif //_HELLO_H_

hello.cpp

#include "hello.h"

int add(int left, int right)

{

return left + right;

}

void show(char* ptr,int nLen)

{

printf("> -------------------\n> Pass `pointer` and `int` data:\n");

printf(">> %s, %d\n", ptr,nLen);

}

char* change(char* ptr, int nLen)

{

if (!ptr || 0 > nLen)

return nullptr;

printf("> -------------------\n> Pass `pointer` and `int` data:\n");

printf("> src strings: %s\n",ptr);

ptr[1] = 'a';

printf("> modify strings: %s\n", ptr);

return ptr;

}

void callByReference(int& nLen)

{

nLen = 100;

}

void callByPtr(int* nLen)

{

*nLen = 1000;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值