c++ - 将函数传递给动态链接库
问题描述
我需要在动态链接库项目中传递函数。在这个项目中,我有两个功能:
HRESULT solve_serial(solver::TSolver_Setup &setup, solver::TSolver_Progress &progress) {
start(setup.max_generations, setup.population_size, setup.problem_size, setup.lower_bound, setup.upper_bound);
}
void start(size_t problem_size, size_t max_generation, size_t population_size, const double* lower_bound, const double* upper_bound)
{
while (t <= MaxGeneration)
{
for (i = 0; i < n; i++)
{
// ---------- HERE I NEED TO USE PASSED FUNCTION -------------
f[i] = function(ffa[i]); // obtain fitness of solution
I[i] = f[i]; // initialize attractiveness
}
}
}
solve-serial
从外部程序调用,它将获得我需要在我将使用它&setup
的函数内部传递的函数。start
这是solver::TSolver_Setup
这样的:
using TObjective_Function = double(IfaceCalling*)(const void *data, const double *solution);
struct TSolver_Setup {
const TObjective_Function objective;
};
我怎样才能通过这个功能?我无法更改solver::TSolver_Setup
,但我可以更改start
(或同一文件中的变量)。
解决方案
修改启动功能以包括设置参考
void start(olver::TSolver_Setup &setup,.....)
呼叫开始:
start(setup,....
调用函数:
setup.objective(data,solution)
推荐阅读
- reactjs - 如何在 React 网络聊天中添加打字指示器
- bootstrap-4 - 更新地图背景 onclick 选项卡按钮
- java - 无法解析方法 saveLatestEventInfo()
- r - 如何更改图例顺序
- javascript - 在 typescript 中输入检查 API 响应
- java - 我的应用程序正在实施 Google 地图功能。我收到位置许可错误
- python - 使用代码/Python 读取 Linux ARP 表的最简单方法
- php - PHP file_get_contents 和 Asana API
- python - 运行时错误设置 secret_key 错误 Flask
- angular - 如何解决这个 Angular 7“检测到循环依赖”警告