我用 C++ 编写了一个动态链接库并正确导出它,以便 Go 能够使用 Win32 API 获取适配器信息。但是当我在 Go 中调用它的函数时,它抛出“找不到指定的过程”错误。我是 Go 的新手,所以我不知道如何解决它。有人可以帮助我吗?
这是有关我的环境的一些信息:
平台:windows 10 x64
CXX 编译器:visual c++ 15.3
去版本:go1.11.2 windows/amd64
这是我的代码:
#include "stdafx.h"
#include <WinSock2.h>
#include <iphlpapi.h>
#include <iostream>
#include <vector>
using namespace std;
__declspec(dllexport) const char *get_default_gateway();
vector <string> default_gateway;
const char *get_default_gateway()
{
PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
PIP_ADAPTER_INFO info_p;
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
info_p = pIpAdapterInfo;
if (ERROR_BUFFER_OVERFLOW == nRel)
{
delete pIpAdapterInfo;
pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
info_p = pIpAdapterInfo;
}
if (ERROR_SUCCESS == nRel)
{
while (info_p)
{
IP_ADDR_STRING *pIpAddrString = &(info_p->IpAddressList);
do
{
string gateway_tmp = info_p->GatewayList.IpAddress.String;
if (gateway_tmp != "0.0.0.0") {
default_gateway.push_back(info_p->GatewayList.IpAddress.String);
}
pIpAddrString = pIpAddrString->Next;
} while (pIpAddrString);
info_p = info_p->Next;
}
}
if (pIpAdapterInfo)
{
delete []pIpAdapterInfo;
}
const char *gateway = default_gateway.at(0).c_str();
return gateway;
}
犯罪嫌疑人X
相关分类