如何在Win32控制台应用程序中访问.lib文件中的方法

时间:2014-11-20 06:38:30

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

我正在尝试使用visual studio 2012访问.lib文件。下面是我遵循的步骤

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

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

    类库

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

  2. 构建应用程序并且成功,我们将其称为classlibrary

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

    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.**
    

1 个答案:

答案 0 :(得分:0)

  1. 您没有lib文件。这种接缝是.NET的托管程序集。
  2. 类中的静态函数不能作为具有extern“C”链接的函数引用。
  3. 将Libs包含在项目中,将它们定义为输入文件,或者将它们添加到链接器选项中。
  4. 如果要创建没有DLL的静态C / C ++库(.lib)。

    1. 启动项目向导
    2. 选择Win32项目
    3. 在向导中选择“静态库”
    4. 使用这样的静态库,您只需要一个头文件和lib,将其包含在另一个项目中。

      使用静态库时没有。

      PS:你应该为Debug和Release模式创建一个静态库。此外,您需要注意控制如何在Lib内部使用CRT的开关。这个编译器开关在lib和项目中应该是相同的,你使用的是lib。