gpt4 book ai didi

c# - 从 .lib 文件创建 .dll 文件

转载 作者:太空狗 更新时间:2023-10-29 21:33:09 26 4
gpt4 key购买 nike

在我提问之前,这里有一些关于我的开发环境的信息:

  • 操作系统:Windows 64 位

  • IDE:Visual Studio 2013

我想通过 C# 项目控制设备。我从设备生产商那里得到了什么:一个 .h 文件和一个静态库(.lib 文件)。在 C++-Console-Application 中,控制工作正常。但是现在我在为 C# 构建 DLL 时遇到了一些问题

为了构建这样一个 .dll 文件,我创建了一个空的 C++ DLL 控制台应用程序,将 .h 文件复制到项目中并将 .lib 文件引用到链接器(添加了一个“附加库方向”和一个解决方案设置中的“附加依赖项”)。

但是到了这一步,问题就出现了。当我构建项目时,控制台打印

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

日志文件没有显示任何错误,但我的 Debug(或 Release)文件夹中没有 DLL 文件。

我尝试了什么:我添加了一个“假的”.cpp 文件,我在其中实现了 .h 文件中的一个功能 -> 构建了 dll。所以我猜想 Visual Studio 无法识别 .lib 文件。

下一步是使用 DllImport 命令编写 C#“包装器”。

预先感谢您提供所有答案和提示。

最佳答案

在 Window 上,函数不会自动从 DLL 中导出,无论是构建自己的源文件 (c/cpp) 还是从链接的静态库中。

您可以通过将 __declspec(dllexport) 添加到函数声明中来导出它们,或者您可以将“模块定义文件 (.def)” 添加到项目中,并列出要导出的函数.例如,这里的函数 foo 可以来 self 的 DLL 中包含的静态库。

LIBRARY TEST
EXPORTS
foo @1

因为它根本不创建文件,不确定 MS 是否将其视为错误或功能,但如果项目没有实际的源文件,它不会创建 DLL。您至少需要一个,它甚至可以是空的。

关于c# - 从 .lib 文件创建 .dll 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592543/

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