我想知道类的导出(VC++中的__declspec(dllexport))是一种标准(ANSI,ISO,...)
我想知道是否有人已经尝试用intel c ++编译器做同样的事情和gcc(mingw在windows上)如果可以混合不同编译器生成的dll(我真的怀疑它是否可能)
谢谢
不,__ declspec是VC++特有的.
默认情况下,VC++需要的原因之一是DLL不会在DLL外部公开符号,除非明确要求这样做.在Posix上,除非明确告知隐藏它们,否则共享对象会公开所有(非静态)符号.
更新
根据您希望使代码可移植的注释,您希望使用预处理器并执行以下操作:
#ifdef WIN32
#ifdef EXPORT_CLASS_FOO
#define CLASS_FOO __declspec(dllexport)
#else
#define CLASS_FOO __declspec(dllimport)
#endif
#else
#define CLASS_FOO
#endif
class CLASS_FOO foo
{ ... };
Run Code Online (Sandbox Code Playgroud)
在实现该类的项目中,确保添加EXPORT_CLASS_FOO作为预处理器定义(在C/C++ |预处理器|预处理定义下的项目|名称属性..中找到).这样,您将在构建DLL时导出它们,在使用DLL时导入它们并在Unix下不执行任何操作.