C 调用嵌入在DLL中的静态库函数

C 调用嵌入在DLL中的静态库函数,c,winapi,dll,C,Winapi,Dll,让我们假设以下体系结构: 在DLL中使用/链接静态库 DLL由可执行文件隐式或显式加载 是否可以从可执行代码访问静态库的代码,而无需显式重新链接静态库,也无需在DLL中插入包装函数? 换句话说,我正在寻找一种方法来导出依赖静态库代码的dll。鉴于您的限制,答案是否定的 原因是可执行文件对DLL的依赖项或调用对象没有任何可见性。就可执行文件而言,他只知道DLL本身:在链接时,可执行文件只知道它从DLL中消耗的导出。他将针对DLL加载库,如果所述DLL的依赖项不可解析,则该DLL将失败,然后调用所述

让我们假设以下体系结构:

在DLL中使用/链接静态库 DLL由可执行文件隐式或显式加载 是否可以从可执行代码访问静态库的代码,而无需显式重新链接静态库,也无需在DLL中插入包装函数?
换句话说,我正在寻找一种方法来导出依赖静态库代码的dll。

鉴于您的限制,答案是否定的

原因是可执行文件对DLL的依赖项或调用对象没有任何可见性。就可执行文件而言,他只知道DLL本身:在链接时,可执行文件只知道它从DLL中消耗的导出。他将针对DLL加载库,如果所述DLL的依赖项不可解析,则该DLL将失败,然后调用所述DLL的导出


如果由于某种原因无法静态链接DLL使用的库,另一种方法是包装对所述静态库的调用。这可能是一种痛苦,因为有很多电话,但有其他人创建的自动化工具来帮助。特别是,我以前曾用它为一个DLL创建过一个包装器,当我想要截取一个特定的DLL时,它会导出数百个函数:

如果您有限制,答案是否定的

原因是可执行文件对DLL的依赖项或调用对象没有任何可见性。就可执行文件而言,他只知道DLL本身:在链接时,可执行文件只知道它从DLL中消耗的导出。他将针对DLL加载库,如果所述DLL的依赖项不可解析,则该DLL将失败,然后调用所述DLL的导出


如果由于某种原因无法静态链接DLL使用的库,另一种方法是包装对所述静态库的调用。这可能是一种痛苦,因为有很多电话,但有其他人创建的自动化工具来帮助。特别是,我以前曾使用它为一个DLL创建过一个包装器,当我想要截取一个特定的DLL时,它会导出数百个函数:

答案很容易是:是的

唯一的要求是:

在静态库文件中,必须为所有要导出的内容定义u declspecdllexport。
然后,当您将此LIB文件包含到DLL项目中时,您声明为uu declspecdllexport的所有函数都将自动进行DLL导出,并可以从Exe中访问。

答案可能很简单:是

唯一的要求是:

在静态库文件中,必须为所有要导出的内容定义u declspecdllexport。
然后,当您将此库文件包含到DLL项目中时,您声明为uu declspecdllexport的所有函数将自动被DLL导出,并且可以从Exe访问。

您自己链接到静态库会有什么问题?仅仅因为DLL链接到静态库,并不意味着包含了整个静态库。您自己链接到静态库会有什么问题?仅仅因为DLL链接到了静态库,并不意味着包含了整个静态库。