【问题标题】:How to access the methods in .lib file in Win 32 console application如何在 Win 32 控制台应用程序中访问 .lib 文件中的方法
【发布时间】:2014-11-20 06:38:30
【问题描述】:

我正在尝试使用 Visual Studio 2012 访问 .lib 文件。以下是我遵循的步骤

  1. 创建一个类库,并包含头文件(.hpp)和.lib文件

    头文件:- extern "C" unsigned int GetKey();

    类库

    public: static unsigned int GetKey1() { return GetKey(); }

  2. 应用构建成功,我们将其称为类库

  3. 创建了一个win 32控制台应用程序并添加了上面的dll作为参考,尝试访问dll中的方法,构建成功,但是当我尝试运行它时,它显示文件未找到异常 在 classlibrary.dll 或其依赖项中,如下所示。

源文件

using namespace ManagedMathFuncsLib;

int main()
{

   Class1 cs;

   cout<<"default value of variable from dll : "<< cs.GetKey1()<<endl;

   return 0;
}

错误 An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module.

补充资料:Could not load file or assembly 'XXXXXXX.dll' or one of its dependencies. The specified module could not be found.

如果有这个异常的处理程序,程序可以安全地继续。

         **Do i need the dll related to .lib file? Please help.**

【问题讨论】:

    标签: winapi dll static-libraries class-library .lib


    【解决方案1】:
    1. 您没有 lib 文件。这似乎是一个使用 .NET 的托管程序集。
    2. 类中的静态函数不能作为具有外部“C”链接的函数来引用。
    3. 在将库定义为输入文件时会将它们包含在项目中,或者将它们添加到链接器选项中。

    如果您想创建一个没有 DLL 的静态 C/C++ 库 (.lib)。

    1. 启动项目向导
    2. 选择 Win32 项目
    3. 在向导中选择“静态库”

    有了这样一个静态库,你只需要一个头文件和这个库就可以将它包含到另一个项目中。

    使用静态库时没有。

    PS:您应该为调试和发布模式创建一个静态库。您还需要注意控制 CRT 在 Lib 中的使用方式的开关。这个编译器开关在 lib 和项目中应该是相同的,如果你使用 lib。

    【讨论】:

    • 我有一个带有头文件的 lib 文件。我在上面发布的头文件的代码。类库代码是我为访问 lib 文件中的方法而编写的代码。有一个 .lib 文件,即一个静态库和一个头文件。现在如何访问里面的方法
    • 正如我所写。 C++/CLI 中的托管例程永远不能通过 extern "C" 访问。向我们展示您的库的代码。 AFAIK 静态库不打算与 C++/CLI 一起使用。此外,您的错误消息显示链接器没有从库中解析任何外部链接。应用程序“链接到”.Net 程序集。
    • 谢谢你的回复..我没有.lib代码..这是第3方.lib和.hpp文件。我试图通过 win 32 控制台应用程序访问它,但它也显示“程序无法启动,因为您的计算机中缺少 XXXX.dll。”
    • 这个第三方库不是静态库。你需要它对应的DLL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2018-10-02
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多