使用g ++创建共享和静态库(在Windows下)

如何使用g ++为Windows创建静态和动态库?

我发现了一些用于创建.so文件的Linux命令,并且我试图将它们应用到Windows外壳程序,但它们会生成应用程序在运行时无法链接的.dll文件。

我只设法使用Visual C ++构建.dll文件,但我想在命令行上手动构建它们,最好使用g++ 。 我也想知道如何为Windows构建静态库。


您需要使用属性的前缀:

__declspec(dllexport)...

您想要公开的所有功能。

看到这个。

C函数的示例:

__declspec(dllexport) int __cdecl Add(int a, int b)
{
  return (a + b);
}  

这可以使用MACROS简化:所有内容都在这个有用的页面上解释。


对于C ++类,您只需要为每个类添加前缀(而不是每一种方法)

我通常这样做:

注意:以下内容也确保了可移植性......

包含文件:

// my_macros.h
//
// Stuffs required under Windoz to export classes properly
// from the shared library...
// USAGE :
//      - Add "-DBUILD_LIB" to the compiler options
//
#ifdef __WIN32__
#ifdef BUILD_LIB
#define LIB_CLASS __declspec(dllexport)
#else
#define LIB_CLASS __declspec(dllimport)
#endif
#else
#define LIB_CLASS       // Linux & other Unices : leave it blank !
#endif

用法:

#include "my_macros.h"

class LIB_CLASS MyClass {
}

然后, 打造 ,简单地说:

  • 将选项-DBUILD_LIB传递给通常的编译器命令行
  • 将选项-shared传递给通常的链接器命令行
  • 链接地址: http://www.djcxy.com/p/64377.html

    上一篇: Creating shared and static libraries using g++ (under Windows)

    下一篇: What's the difference between .so, .la and .a library files?