c++文件调用dll

include “stdafx.h”

include

pragma once

ifndef SKYEYECALL_20170119

define SKYEYECALL_20170119

typedef int(*lpFun)(int, int);
typedef int(setEndPoint)(const char );
typedef int(sendStartInfo)(const char );
typedef int(*sendStopInfo)(int);
typedef int(sendOperationInfo)(const char );
typedef int(sendFileByPath)(const char );
typedef int(sendFileByContent)(const char , size_t, const char*);
extern const wchar_t *m_uri;

extern char* UnicodeToUtf8(const wchar_t* unicode);

extern wchar_t* CharToWchar(char* c);

class SkyEyeCall
{
public:
SkyEyeCall();
void SetEndPoint();
void SendStartInfo(const wchar_t *);
void SendStopInfo(int);
void SendOperationInfo(const wchar_t *);
void SendFileByPath(const wchar_t *);
void SendFileByContent(const wchar_t , size_t, const wchar_t);
~SkyEyeCall();
public:
HINSTANCE m_hDll;
/*setEndPoint m_funSetEndPoint;
sendStartInfo m_sendStartInfo;
sendStopInfo m_sendStopInfo;*/
};

endif // !

cpp文件

include “stdafx.h”

include”stdio.h”

include”stdlib.h”

include”windows.h”

include

include “SkyEyeCall.h”

using namespace std;

char* UnicodeToUtf8(const wchar_t* unicode)
{
int len;
len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL);
char szUtf8 = (char)malloc(len + 1);
memset(szUtf8, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL);
return szUtf8;
}

wchar_t* CharToWchar(char* c)
{
int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);
wchar_t *m_wchar = new wchar_t[len + 1];
MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);
m_wchar[len] = ‘\0’;
return m_wchar;
}

const wchar_t *m_uri = L”http://172.17.100.148:8094/api/v1/“;
SkyEyeCall::SkyEyeCall()
{
m_hDll = NULL;
m_hDll = LoadLibraryA(“H3dClientService.dll”);
cout << m_hDll << endl;
}

SkyEyeCall::~SkyEyeCall()
{
if (m_hDll != NULL)
{
FreeLibrary(m_hDll);
}
m_hDll = NULL;
}

void SkyEyeCall::SetEndPoint()
{
if (m_hDll)
{
setEndPoint FunSetEndPoint;
FunSetEndPoint = (setEndPoint)GetProcAddress(m_hDll, “skyeye_set_api_endpoint”);
if (FunSetEndPoint != NULL)
{
FunSetEndPoint(UnicodeToUtf8(m_uri));
}
}
}

void SkyEyeCall::SendStartInfo(const wchar_t *editor)
{
if (m_hDll)
{
sendStartInfo FunSendStartInfo;
FunSendStartInfo = (sendStartInfo)GetProcAddress(m_hDll, “skyeye_send_start_info”);
if (FunSendStartInfo != NULL)
{
FunSendStartInfo(UnicodeToUtf8(editor));
}
}
}

void SkyEyeCall::SendOperationInfo(const wchar_t *op)
{
if (m_hDll)
{
sendOperationInfo FunSendOperationInfo;
FunSendOperationInfo = (sendOperationInfo)GetProcAddress(m_hDll, “skyeye_send_operation_info”);
if (FunSendOperationInfo != NULL)
{
FunSendOperationInfo(UnicodeToUtf8(op));
}
}
}

void SkyEyeCall::SendFileByPath(const wchar_t *filePath)
{
if (m_hDll)
{
sendFileByPath FunSendFileByPath;
FunSendFileByPath = (sendFileByPath)GetProcAddress(m_hDll, “skyeye_send_file_by_path”);
if (FunSendFileByPath != NULL)
{
FunSendFileByPath(UnicodeToUtf8(filePath));
}
}
}

void SkyEyeCall::SendFileByContent(const wchar_t content, size_t size, const wchar_t fileName)
{
if (m_hDll)
{
sendFileByContent FunSendFileByContent;
FunSendFileByContent = (sendFileByContent)GetProcAddress(m_hDll, “skyeye_send_file_by_content”);
if (FunSendFileByContent != NULL)
{
FunSendFileByContent(UnicodeToUtf8(content), size, UnicodeToUtf8(fileName));
}
}
}

void SkyEyeCall::SendStopInfo(int exitId)
{
if (m_hDll)
{
sendStopInfo FunSendStopInfo;
FunSendStopInfo = (sendStopInfo)GetProcAddress(m_hDll, “skyeye_send_stop_info”);
if (FunSendStopInfo != NULL)
{
FunSendStopInfo(exitId);
}
}

}

调用的接口文件

pragma once

ifdef __cplusplus

extern “C” {

endif

/**
设置服务API地址,如:http://172.17.100.148:30000

如果不调用,则会用默认地址。如果调用则必须在最开始调用。

@return 0 表示成功,-1表示失败,比如参数不是个合法的url
*/
int skyeye_set_api_endpoint(const char *ep);

/**
发送启动信息
@param editor 编辑器名称。不能是null。utf8编码
@return 0表示成功,-1表示失败
*/
int skyeye_send_start_info(const char *editor);

/**
发送程序终止信息
@param ec 退出码,0表示正常
@return 0表示成功,-1表示失败。
*/
int skyeye_send_stop_info(int ec);

/**
发送操作信息
@param cmd 操作的名称。utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_operation_info(const char *cmd);

/**
发送文件
@param filepath 文件路径。utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_file_by_path(const char *filepath);

/**
发送文件
@param content, len 要上传的文件的内容和长度
@param filename 用于保存文件的文件名,utf8编码
@return 0表示成功,-1表示失败。
*/
int skyeye_send_file_by_content(const char *content, size_t len, const char *filename);

ifdef __cplusplus

}

endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿拉平平的小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值