2

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

我为 Linux 找到了一些用于创建.so文件的命令,并尝试在 Windows shell 上应用它们,但它们构建.dll了我的应用程序在运行时无法链接的文件。

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

4

1 回答 1

1

您需要前缀属性:

__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给通常的链接器命令行
于 2013-06-22T16:44:04.447 回答