我有一个托管的C ++ / CLI项目,必须使用一些本机代码。本机头文件的简化版本为:
struct structA
{
// Some variables...
};
struct structB
{
// Some similar variables...
void convertTo(structA& dest);
};
此标头包含在托管代码中。托管代码包含:
structA sA;
structB sB;
// Load data into sB...
sB.convertTo(sA);
我正在使用Visual Studio 2008并使用/clr
编译托管代码。这当然会生成链接器错误(LNK2028),因为隐式调用约定不同。但是我无法使用extern "C"
声明来解决这个问题(或者我使用错误)。我在这里尝试了几个解决类似问题的解决方案,但没有用。
如何从托管代码中正确调用非托管函数?这里需要什么声明或包装?