使用VS编译C++库为静态库和动态dll

3
我需要编译一个现有的C++库,既要编译成lib格式也要编译成dll格式,然后在不同的应用程序中使用静态和动态库。我使用的是VS2010。
问题是我不能编辑所有的头文件以添加__declspec(dllexport)指令来进行导出,因为库必须保持原样。
在Mac上,我能够编译并使用dylib而没有任何问题,但我知道在这方面VS存在缺陷。
在VS中,是否可以先编译静态库,然后再编译dll,以便在编译时从应用程序中链接函数(即“导出”)?换句话说,我是否可以像使用由__declspec(dllexport)生成的导出库一样使用静态库? 是否有更好的解决方法?
1个回答

2
我需要编译一个现有的C++库,既要生成lib文件又要生成dll文件,并在不同的应用程序中使用静态和动态库。我使用VS2010。
为此创建配置。例如Release LIB、Release DLL等。
但是,我无法编辑所有头文件以添加__declspec(dllexport)指令进行导出,因为必须保持库的原样。
只需添加模块定义文件(*.def),其中包含导出函数列表。
换句话说,我可以像使用由__declspec(dllexport)生成的导出库一样使用静态库吗?
不行,这些库是不同的。当您构建DLL时,会得到一个二进制文件和一个lib文件。

谢谢Sergius。.def文件是否可以由VS生成,还是我必须手工制作?该库包含数十个函数... - step
据我所知,VS 只能生成空的 .def 文件。 - Sergey Podobry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接