C++显式调用DLL

#pragma once
#include<iostream>
#include "Vector3.h"
#include "Quat.h"
#include <cinttypes>
using namespace std;

1.定义dll中函数原型
typedef bool(*pCMHumanExtern)(char* address, uint32_t channel, uint64_t frameCount, double* attitude, int* segmentIsDetected);

typedef double(*pCMTrackerExtern)(char* address, uint32_t channel, int component, uint64_t frameCount, bool lockUpRotation);


2.创建dll函数句柄

pCMTrackerExtern CMTrackerExtern;
pCMHumanExtern CMHumanExtern;



3.加载dll,把上一步创建的句柄映射到dll中的函数

HINSTANCE handle_dll;
handle_dll = LoadLibrary("E:\\Program Files\\Autodesk\\MotionBuilder 2016\\bin\\x64\\plugins\\CMUnity.dll");
if (handle_dll == NULL)
{
//FreeLibrary(hdll);
throw "Can not load CMUnity.dll";
}
CMTrackerExtern = (pCMTrackerExtern)GetProcAddress(handle_dll, "CMTrackerExtern");
if (CMTrackerExtern == NULL)
{
FreeLibrary(handle_dll);
}
CMHumanExtern = (pCMHumanExtern)GetProcAddress(handle_dll, "CMHumanExtern");
if (CMHumanExtern == NULL)
{
FreeLibrary(handle_dll);
}


4.调用句柄函数。

CMTrackerExtern(address, channel, 0, GFrameCounter, false);

 CMHumanExtern(address, channel, GFrameCounter, boneAttitude, isBoneDetected);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值