c# - 将 C# 应用程序的引用添加到没有/clr 编译的 DLL?

标签 c# c++ visual-studio visual-studio-2008 pinvoke

我正在使用 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/

相关文章:

c# - 如何为多个 Visual Studio 版本打包基于 VSIX 的扩展?

c++ - 如何在 Windows 上安装 TensorFlow?

javascript - 为什么这个函数返回 NaN?

c# - 仅当超过一定大小时才从字符串中删除空格

C# - 获取源代码文件正在使用或引用的类型列表

c++ - std::string::data() 不会返回 char*

c++ - recursive_directory_iterator 抛出异常

android - 交叉编译: more difficult than it should be?

c# - 序列化包含其他 ISerializable 对象的 ISerializable 对象

c# - 使用 csc.exe 构建时访问内部异常