我有带有本机接口(导出类)的 C++ dll,它是用 /clr 开关编译的。导出类的一些方法有...
参数。编译器在此类上显示 C4793 警告:函数被编译为本机代码。
// ExportedClass.h
class LIBRARY_API ExportedClass
{
public:
void Method(const char* format, ...);
};
// ExportedClass.cpp
void ManagedFunction()
{
String^ s = gcnew String(L""); // OK
}
void ExportedClass::Method(const char* format, ...)
{
// Not allowed: the function is native
// String^ s = gcnew String(L"");
// Call ManagedFunction instead:
ManagedFunction();
}
由于该类被编译为本机,我不能直接在类方法中使用托管代码。但是,我可以调用托管函数,如代码示例所示。这样做安全吗?