0
我已經創建了一個輸出類型爲netmodule的C#代碼。這被用在C++代碼中。無法在使用C++調用C#時在另一個AppDomain中創建對象
我想創建一個已加載的相同程序集的對象。但是,在一個單獨的AppDomain中。但是,當這樣做時,我無法加載程序集以使用CreateInstanceAndUnwrap方法創建對象。當試圖用獨立的C#代碼做同樣的事情時,它可以正常工作。
C++:
TestClass __gc *testObj;
testObj = AppDomainProcessor::getInstance()->newTestObj((LPWSTR)domName);
//testObj->otherOperation...
C#
namespace TestNS {
public class AppDomainProcessor {
...
public TestClass newTestObj(String domName) {
AppDomain appDomain = AppDomain.CreateDommain(domName);
TestClass testObj = (TestClass)appDomain.CreateInstanceAndUnwrap(typeof(TestClass).Assembly.FullName,typeof(TestClass).FullName);
//Could not load file or assembly 'MyManaged, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified
return testObj;
}
...
}
public class TestClass : MarshalByRefObject {
...
}
}
我印刷的AssemblyName,發現它作爲從C++代碼編譯的dll的名稱。從獨立的C#嘗試時,它是exe的名稱。
當使用C++和C#時,這是創建AppDomain的正確方法嗎?或者我在創建AppDomain時犯了一些錯誤。請協助。
您是否收到錯誤消息?如果你是,複製/粘貼到你的問題。 – 2015-02-07 19:16:33
@RobertHarvey我在代碼附近的註釋中添加了錯誤。 – 2015-02-07 19:22:00
該錯誤消息似乎是一個簡單的文件查找問題。 – 2015-02-07 19:30:45