我使用code :: blocks
在windows上安装了libnoise在编译时会出错:
undefined reference to `noise::module::Perlin::Perlin()'
undefined reference to `noise::module::Perlin::GetValue(double, double, double) const'
undefined reference to `vtable for noise::module::Perlin'
undefined reference to `noise::module::Module::~Module()'
但引用位于perlin.h
头文件
我该如何解决这个问题?
答案 0 :(得分:0)
在Windows上, libnoise 附带一个* .def文件,负责导出符号。但是当我今天早上试图用64位编译lib时,似乎这种机制不起作用。 我必须“手动”导出类符号:
导出libnoise符号的步骤:
。在将lib编译为共享库时定义预处理器变量LIBNOISE_EXPORT
,在编译使用 lib的项目时不要添加它
。在lib的顶级标题中添加一些导出宏(例如,basictypes.h):
#if defined(WIN32)
# ifdef LIBNOISE_EXPORT
# define LIBNOISE_DLL __declspec(dllexport)
# else
# define LIBNOISE_DLL __declspec(dllimport)
# endif
#else
# define LIBNOISE_DLL
#endif
。在类定义前面添加LIBNOISE_DLL宏:
class LIBNOISE_DLL Perlin: public Module
{
...
这对我来说很有把握
注意:如果您尝试使用此解决方案,请不要在编译过程中使用* .def文件