【发布时间】:2015-11-29 22:49:08
【问题描述】:
我在非托管 C++ 中的回调是这样的:
typedef void (*ErrorCallback)(OutputLog& log, std::string& message);
它的用法(代码被简化):
class OutputLog
{
private:
ErrorCallback _callback;
public:
void Error(std::string& message)
{
// print message to console/stream here
if (_callback)
{
_callback(*this, message);
}
}
};
在 C++/CLI 中,我为我的非托管 OutputLog 类创建了一个包装类。我这样定义回调函数:
public delegate void ErrorCallback(OutputLog^ log, String^ message);
所以我知道我可以通过Marshal::GetFunctionPointerForDelegate 获取函数指针,但是如何将托管参数(OutputLog^ log 和String^ message)转换为非托管参数(OutputLog& log 和std::string& message)?
【问题讨论】:
标签: visual-c++ callback c++-cli function-pointers mixed-mode