您好在學習C++/cli的過程中,併爲此閱讀本書的專家C++/cli。在作者陳述的書「 」中,編譯器選項/ clr:pure仍允許您將現有的C++代碼編譯爲託管代碼(源代碼兼容性)「。這是否意味着現有的本機代碼可以使用/ clr:pure重新編譯在CRT堆中初始化的對象?本地C++項目可以使用/ clr重新編譯:純
更新1:例如Can Class B可以用/ clr:pure?編譯。
Class A {
Public :
A()
{
}
~A()
{
}
void Foo()
{
}
};
Class B {
Public :
A* test;
B()
{
test = new A();
test->Foo();
}
~B()
{
delete test;
}
};
MSDN指出
純程序集(使用/ clr編譯:純)可以包含天然和 管理的數據類型,但僅管理功能
和
/clr:純
生成僅具有本機可執行代碼的Microsoft中間語言(MSIL)輸出文件。但是,它可以包含編譯爲MSIL的本機類型。
從我的理解(我可能錯在這裏)test = new A();生成本地代碼,因此無法使用/ clr:pure進行編譯。如果我錯了,任何一個可以給我
- 本機函數的例子(如MSDN規定只有管理功能 允許)
- ,可以用/ CLR和 被編譯的類的實例不使用/ clr:純
感謝
類不會被初始化,對象會這樣做。提供您正在討論的本機代碼的示例。 –
@BenVoigt對不起,我的錯誤。我已更正它,併發布了一個簡單的代碼示例 – user119020
當執行'/ clr:pure'時,將管理所有功能。請注意,您仍在使用本地庫調用 - 使用'/ clr:pure',那些將使用p/invoke而不是IJW C++ interop來執行。 –