gcc (GCC) 4.7.2
你好,
我正在创建一个将在 linux 上编译的共享库和一个将在 windows 上使用相同源代码编译的 dll。所以我正在为 linux 和 windows 创建一个可移植的库。
在我的库头文件中是这个,即 module.h
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _WIN32
#define LIB_INTERFACE(type) EXTERN_C __declspec(dllexport) type
#else
#define LIB_INTERFACE(type) type
#endif
LIB_INTERFACE(int) module_init();
#ifdef __cplusplus
}
#endif
在源代码中,我有以下内容,即 module.c
#include "module.h"
LIB_INTERFACE(int) module_init()
{
/* do something useful
return 0;
}
在我的测试应用程序中,它将链接和使用这个模块。所以我有这个:
#include "module.h"
int main(void)
{
if(module_init() != 0) {
return -1;
}
return 0;
}
1)我上面所做的是否是为linux和windows创建可移植库的正确实现?
2)我只是想知道,因为我已经包装了函数,extern "C"
以便可以从用 C++ 编译的程序调用这个库。我是否还需要EXTERN_C
以下内容:
#define LIB_INTERFACE(type) EXTERN_C __declspec(dllexport) type
3) 的目的是EXTERN_C
什么?
提前谢谢了,