我正在使用dart:ffi调用C函数。我有以下C代码
typedef void* (*unmanaged_callback_ptr)(const char* , const char*);
typedef char* (*managed_direct_method_ptr)(const char*,
const char* , unmanaged_callback_ptr);
使用函数指针作为返回类型或参数的如下方法
CPPLIB_API managed_direct_method_ptr CreateManagedDelegate(const char* libName,
const char* type,
const char* methodName);
CPPLIB_API char* InvokeManagedFunction(const char* name,
const char* args,
unmanaged_callback_ptr unmanagedCallback);
问题是如何使用dart:ffi调用这些方法?我的意思是如何定义typedefs、查找方法以及在函数返回函数ptr时获取结果,即CreateManagedDelegate(..)
返回managed_direct_method_ptr
1条答案
按热度按时间wh6knrhe1#
最后我找到了问题的解决方案。下面是C++方法的typedefs
现在如何使用这个typedefs来调用返回函数ptr的函数如下。我已经有了DLL的句柄dyLib
不返回函数指针,可以只返回一个bool作为状态,并在C++方法内部设置函数指针,该函数指针可以是类/结构的成员。
使用这种方法,你也可以避免所有以上的东西,使它更简单。因为这是为我工作,我标记为'已解决'