为啥类库 (dll) 也不生成 lib 文件?
Posted
技术标签:
【中文标题】为啥类库 (dll) 也不生成 lib 文件?【英文标题】:Why doesn't Class Library (dll) also produces a lib file?为什么类库 (dll) 也不生成 lib 文件? 【发布时间】:2016-01-18 22:08:15 【问题描述】:我正在尝试通过 C++ (C++/Cli) 项目创建和使用 C# 库 (dll)。但是,我的 C# 库没有(或产生) .lib 文件。有人告诉我我需要一个 lib 文件,但我不确定如何生成它。
可以查看代码here
我已将 .dll 文件包含在我的 C++ 项目中,但它无法运行。
我收到以下错误:
未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常。附加信息:无法加载文件或程序集“ClassLibrary1,版本=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其其中之一依赖项。系统找不到指定的文件。
我对 .dll 和 .lib 文件比较陌生。 这个问题和我发现的另一个问题here
有关【问题讨论】:
【参考方案1】:.NET 程序集(在您的情况下是 C# 库)不是普通的 dll,换句话说,它们不像其他标准(本机)windows dll 那样公开其 API。相反,它们以只有其他 .NET 才能理解的方式公开其 API。
有两种方法可以为 C++ 项目公开 .NET API。
1- 将 C++ 本机项目转换为托管 C++ 项目(即 .NET C++ 程序集),然后您可以将 C# 库作为 .NET 引用添加到 C++ 项目,并将其作为托管库调用。
2- 您可以将 .NET 库转换为 COM+ 库,然后从 C++ 中将其用作 COM+ 依赖项。
简而言之,通过 .lib 文件直接使用 .NET API 并不是 .NET 的特性
【讨论】:
以上是关于为啥类库 (dll) 也不生成 lib 文件?的主要内容,如果未能解决你的问题,请参考以下文章