1

我有带有本机接口(导出类)的 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();
}

由于该类被编译为本机,我不能直接在类方法中使用托管代码。但是,我可以调用托管函数,如代码示例所示。这样做安全吗?

4

0 回答 0