gpt4 book ai didi

c# - 如何制作可在 C# 应用程序中引用的 Win32 DLL?

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:59 27 4
gpt4 key购买 nike

我有一个相当大的遗留 nmake (Win32) 项目,它从 native C++ 代码创建一个静态库。我需要在 C#/.Net 应用程序中使用这个库。在过去,经过大量努力,我成功地将静态库包装在托管 C++ 库中,然后我可以在 C#/.Net 应用程序中引用它。然而,在收到 nmake 项目开发人员的更新,同时在我自己的构建机器上进行了多次升级后,它不再工作了。

但是,通过在构建属性中设置所有预处理器常量,我能够导入 nmake 项目的 cpp 和头文件并将其构建到 VS 2010 中的 Win32 静态库。我将构建配置类型设置为 DLL,然后尝试在我的 C#/.Net 应用程序中添加对 Win32 输出的引用,希望在以后使用 P/Invoke,但失败并显示消息“无法引用 MyLibrary被添加。”

有没有办法构建 Win32 库,以便它可以被 C#/.Net 项目引用,以便我可以使用 P/Invoke?

最佳答案

Is there a way to build the Win32 library so that it can be referenced by the C#/.Net project and so that I can use P/Invoke?

如果您想直接引用该库,您需要使用您的库构建一个 C++/CLI 项目,并制作托管包装器。

如果您想使用 P/Invoke(这是一个单独的概念),您可以使用 C API 进行导出,然后直接通过 P/Invoke 调用它们。

这两种方法都是有效的,但在 native 端的实现(C++/CLI 与 C API 包装器)方面完全不同,并且使用方式也不同(直接引用 C++/CLI 与 P/Invoke 通过[DllImport]).

关于c# - 如何制作可在 C# 应用程序中引用的 Win32 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17733932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com