【发布时间】:2010-01-18 17:18:46
【问题描述】:
我正在使用 Visual Studio 2008 构建一个包含两个项目的解决方案:一个 C# 控制台应用程序和一个 C++ DLL。我希望应用程序使用 P/Invoke 从 dll 调用一个函数。因此,我尝试将 dll 添加为对 C# 应用程序的引用。但是当我尝试添加引用命令时,Visual Studio 不会让我这样做,除非我在 dll 上设置 /clr 属性(在配置属性:常规下)。现在,我认为 P/Invoke 可以处理普通的 win32 dll。事实上,如果我在没有 /clr 的情况下构建我的 dll 并手动将其复制到 bin/Debug,那么应用程序运行良好。那么为什么需要 /clr 来添加 dll 作为参考呢?如果 VS 不让我添加它,是否有一些(干净的)解决方法以便我的应用找到 dll?
我看到有人在这里遇到了类似的问题(尽管使用的是第 3 方 dll): Unable to add a DLL Reference to VS 2008 他得到的答案是构建一个包装器。但这并不是必需的,因为应用程序可以很好地使用 dll;只是“添加引用”步骤不起作用。此外,包装代码是否不需要引用 dll,从而引发与以前相同的问题?我真的很想要一个完全不涉及编写包装器的答案。
【问题讨论】:
标签: c# c++ visual-studio visual-studio-2008 pinvoke