编译器找不到命名空间 'System.Windows.Interop'。

4

帮帮忙!!编译器找不到名为'System.Windows.Interop'的命名空间。

最近我建立了一个winform项目,并想使用另一个c++项目生成的dll(用于进行一些d3d渲染工作);

OS: win7 x64
IDE: vs2013
Language:C#
current framework used in the winform project is ".net framework 4.5"

在winform项目中,我创建了一个名为MCDllOpt.cs的类文件。代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Interop; // Error occured here!

namespace WorldEditor
{
    class MCDllOpt
    {

    }
}

以下是编译器的部分提示信息。

1>CoreCompile:
1>  C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /platform:anycpu32bitpreferred /errorreport:prompt /warn:4 /define:TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Deployment.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Drawing.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Windows.Forms.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\WorldEditor.exe /subsystemversion:6.00 /resource:obj\Release\WorldEditor.Form1.resources /resource:obj\Release\WorldEditor.Properties.Resources.resources /target:winexe /utf8output Form1.cs Form1.Designer.cs MCDllOpt.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "C:\Users\Think\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.cs" obj\Release\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\Release\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Release\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1>F:\WorldEditor\WorldEditor\WorldEditor\MCDllOpt.cs(6,22,6,29): error CS0234: The type or namespace name 'Interop' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?)
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.78
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

经过几分钟的搜索,我发现我需要添加指定的引用。但是,即使我添加了所有前缀为“System.Windows”的引用,问题仍未解决!enter image description here

有人之前遇到过这个问题吗?请帮帮我。


1
我假设如果您在WinForms项目中使用C++ dll,则需要System.Runtime.InteropServices命名空间。 - Ulugbek Umirov
我认为你的命名空间是错误的。请给它正确的命名空间。 - jhyap
2个回答

3
这是一个WPF命名空间。你可以引用一个程序集(它会向该命名空间提供类),即PresentationCore.dll。但是,既然你已经使用了using指令,那么你实际上需要哪些来自System.Windows.Interop的类呢?你需要引用那些包含这些类的程序集。
也许解决方案是删除using指令?
如果你创建一个WinForm应用程序,可能不需要任何WPF命名空间?

0
根据此链接System.Windows.Interop是用于WPF的:

提供支持类型,用于Windows Presentation Foundation(WPF)与其他技术(如Win32 API)之间的互操作,并为涉及WPF的其他特定互操作方案提供基类。


1
我只想使用一些Win32 API来获取画布的HWND并初始化D3D11Device和D3D11DeviceContext。 - AntiMoron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接