在托管代码中包装非托管代码会导致DLL丢失

时间:2014-06-16 16:14:46

标签: c# c++ .net wpf dll

我正在尝试在WPF应用程序中创建Direct3D11窗口。现在我使用来自here的D3DImageEx类(从D3DImage派生)来使其工作。

但是我的D3D11渲染器代码使用DirectXmath.h中的一些数学函数,并且它不能在托管代码中使用。所以我编写了一些包装代码来保持渲染器不受管理。

我现在有三个项目在解决方案中,

  • 一个名为D3DCore的非托管C ++项目,用于执行所有渲染作业。它是一个DLL。
  • 一个名为Wrapper的托管C ++项目,用于包装非托管代码。它是一个DLL。
  • 一个WPF项目。有一个<Image/>标记来保留D3DImage,并在Window.Loaded中初始化Wrapper。

但WPF应用程序将跳过Loaded函数。如果我把新的Wrapper&#39;进入Window的构造函数,然后它抛出一个异常System.Windows.Markup.XamlParseException,它包含一个内部异常System.IO.FileLoadException。它无法加载Wrapper.dll,为什么?参考是好的(没有黄色三角形)。

PS。class D3DCore没有析构函数(但实际上需要释放大量资源,例如ID3D11Device*),这会是问题吗?

0 个答案:

没有答案