我有兴趣使用我的静态lib来创建一个dll(隐式链接)。这意味着我需要(在vs2008中) 创建一个应该生成以下内容的dll项目:
我已经制作了一个测试程序,它将利用上面的dll(包括导入lib /头文件)来测试它。 在这里我已经包括了所有这三个项目。现在exe编译/链接没有问题。 但是在main.cpp中,当我调用导出的函数时(带有相关的__declspec(dllimport)调用,它似乎永远不会执行。我不确定为什么会这样? 它几乎就像即使exe可以在dll中看到导出的函数... dll也无法调用静态库中的代码?
我只是无法回答为什么我的exe无法在静态库中看到代码?我是否需要vs2008的归档器/库管理器将所有这些obj文件包含在导入库中? 我很茫然,不知道如何测试这个?
除了将我的静态库直接放入dll之外。我想尝试这种方法。我知道我错过了一些东西......我已经阅读了所有地方,我只是被卡住了。这里有一些线程,有些人发布了类似的东西,但我似乎无法得到它。请尽可能详细,因为我是新手。再次感谢。
更新1: 好的,所以目前我将extern线添加到函数原型中,现在它从dll中看到导出的函数。但是,现在唯一的问题是:
我无法调用此导出函数(aka包装器)试图调用的函数。这恰好在静态库中。我的exe应该如何获得该静态库函数的可见性。我知道可以这样做,因为我认为这个董事会中还有另外一个人能够完成这项工作。
更新2:我的设置与提问者完全一样...... How to force inclusion of an object file in a static library when linking into executable?
但我没有使用显式链接。我正在使用隐式链接。我真正的问题是如何在我的dll包装器中调用静态lib函数,该函数将导出到exe?
答案 0 :(得分:0)
如果应用程序和DLL是MFC app / dll,那么请确保应用程序和所有dll都是“Debug”版本或“release”版本而不是混合版本。