利用静态库创建导入库

utilizing a static library to create an import library

本文关键字:创建 导入 静态      更新时间:2023-10-16

我有兴趣使用我的静态库来创建一个dll(隐式链接)。这意味着我需要(在vs2008)创建一个DLL项目,该项目应生成以下内容:

  1. 头文件(有导出函数声明)。这些是静态库中使用__declspec(dllexport)的实际函数的简单包装器,它们位于.cpp
  2. 文件中。
  3. 导入库,这将作为创建dll的结果
  4. 实际创建的dll。

我已经做了一个测试程序,将利用上述dll(包括导入库/头文件)来测试它。这三个项目我都包括在内。现在exe编译/链接没有问题。然而,在main.cpp中,当我调用导出的函数(带有关联的__declspec(dllimport)调用)时,它似乎永远不会执行。我不确定为什么会这样?它几乎就像即使exe可以在dll中看到导出函数…DLL不能调用静态库中的代码?

我只是不能回答为什么我的exe不能看到静态库中的代码?我是否需要一个vs2008的归档器/图书管理员来包括所有这些obj文件作为导入库的一部分?我不知所措,不知道如何测试这个?

而不是将静态库直接放入dll中。我想试试这个方法。我知道我错过了什么……我到处都看了,就是看不下去了。这里有一些线程,有一些人张贴类似的东西,但我似乎不能得到它。请尽可能详细,因为我是新手。再次感谢。

更新1:现在我在函数原型中添加了外部行,现在它看到了从dll中导出的函数。但是,现在剩下的唯一问题是:

i不能调用这个导出函数(又名包装器)试图调用的函数。它恰好在静态库中。我的exe如何获得该静态库函数的可见性。我知道这是可以做到的,因为我认为董事会中还有一个人能够做到这一点。

更新2:我的设置完全像这个提问者…当链接到可执行文件时,如何强制在静态库中包含对象文件?

,但我没有使用显式链接。我用的是隐式连接。我真正的问题是如何调用静态库函数在我的DLL包装导出到exe?

如果应用程序和dll都是MFC app/dll,那么请确保应用程序和所有dll都是"调试"版本或"发布"版本,而不是混合版本。