我有类似的设置,如下所述:
项目A
项目B
现在,如果是全局函数,例如createNewFoo
在项目B 中编译,它永远不会导出到最终的DLL中,尽管它是用dllexport
声明的,最终的应用程序将其用作dllimport
:
namespace example
{
class __declspec(dllexport) Foo
{
Foo();
};
__declspec(dllexport) Foo* createNewFoo();
}
}
请注意,类Foo
始终会导出到最终的DLL中,它是唯一被丢弃的全局或静态函数。
此外,请注意,如果在项目A 而不是项目B 中编译,则始终会导出相同的全局函数。
Visual Studio 2010中是否有允许从依赖项目导出全局或静态函数的设置?或者这是工具的限制?
答案 0 :(得分:1)
使用静态库是重用代码的好方法。不是在每个需要该功能的应用程序中重新实现相同的例程,而是在静态库中编写它们一次,然后从应用程序中引用它。从静态库链接的代码将成为您应用程序的一部分 - 您无需安装其他文件即可使用该代码。
在你的情况下,Lib B的功能被链接并成为DLL A的一部分,如果你想在DLL A中导出这些功能,你应该明确地 dllexport
函数在DLL A中,在函数体中,你可以调用Lib B的函数来重用代码。