我正在使用 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 的引用,从而引发与以前相同的问题?我真的很想要一个根本不涉及编写包装器的答案。
最佳答案
为什么不添加一个构建后步骤来将非托管 DLL 复制到项目目录?您不需要“引用”即可引用非托管 DLL,听起来您遇到的唯一问题是文件未自动复制到搜索路径。
关于c# - 将 C# 应用程序的引用添加到没有/clr 编译的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087840/