Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 利用静态库创建导入库_C++ - Fatal编程技术网

C++ 利用静态库创建导入库

C++ 利用静态库创建导入库,c++,C++,我对使用静态库创建dll(隐式链接)感兴趣。这意味着我需要(在vs2008中) 创建应生成以下内容的dll项目: 头文件(具有导出函数声明。这些是使用.cpp中的_declspec(dllexport))到静态库中实际函数的简单包装) 导入创建dll后生成的库 创建的实际dll 我已经做了一个测试程序,将利用上面的dll(包括导入库/头文件)来测试它。 在这篇文章中,我包括了所有三个项目。现在exe编译/链接没有问题。 然而,在main.cpp中,当我调用导出函数(以及相关的u declspec

我对使用静态库创建dll(隐式链接)感兴趣。这意味着我需要(在vs2008中) 创建应生成以下内容的dll项目:

  • 头文件(具有导出函数声明。这些是使用.cpp中的_declspec(dllexport))到静态库中实际函数的简单包装)
  • 导入创建dll后生成的库
  • 创建的实际dll
  • 我已经做了一个测试程序,将利用上面的dll(包括导入库/头文件)来测试它。 在这篇文章中,我包括了所有三个项目。现在exe编译/链接没有问题。 然而,在main.cpp中,当我调用导出函数(以及相关的u declspec(dllimport))时,它似乎从未执行过。我不确定这是为什么? 这几乎就像,即使exe可以在dll中看到导出的函数…dll不能调用静态库中的代码

    我无法回答为什么我的exe在静态库中看不到代码?我是否需要vs2008的archiver/Library将所有这些obj文件作为导入库的一部分? 我不知所措,不知道如何测试这个

    除了直接将我的静态库制作成dll之外,我还想尝试这种方法。我知道我遗漏了一些东西…我已经读遍了所有的地方,我只是被卡住了。这里有一些线程有一些人发布了类似的东西,但我似乎无法得到它。请尽可能详细,因为我是新手。再次感谢

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

    我无法调用此导出函数(aka wrapper)尝试调用的函数。该函数恰好位于静态库中。我的exe应该如何查看该静态库函数。我知道这是可以做到的,因为我认为该板上还有一个人能够做到这一点

    更新2:我的设置和这个提问者完全一样。。。


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

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

    您所说的“它似乎永远不会执行”是什么意思?你试过单步执行代码吗?基本上是在我运行exe时。它似乎从未调用导出的函数…我不知道为什么…是的,这不是问题。它们都是作为发行版生成的。我想如果不是,那么你会收到很多警告等。不,这不是问题。。