把cocos2dx win32工程编译成静态库
发表于2015-12-02
这个是因为工程组织问题,编译成动态库,出现很多错误,一个同事
想出的方法,不建议使用。
1、因为工程组织问题,导致cocos2dx库代码和外部扩展代码互相使用,
编译称动态库DLL会有很多编译错误和链接错误,如源码文件的互相引用。
2、一个同事说如果编译成静态库,就可以先编译,然后整个工程再链接,
这就和编译器的实现有关了。我也不太懂。
3、把cocos2dx工程库文件编译称静态库,需要做什么?
3.1、
编译称动态库DLL时,需要使用 __declspec(dllexport) 和 __declspec(dllimport)
用于库类和函数的导出导入。类似于下面的代码:
#elif defined(_WIN32) || defined(_WINRT) || defined(_WP8)
//#if defined(_EXPORT_DLL_)
//#define EXPORT_DLL __declspec(dllexport)
//#elif defined(IGNORE_EXPORT)
//#define EXPORT_DLL
//#else /* use a DLL library */
//#define EXPORT_DLL __declspec(dllimport)
//#endif
#define EXPORT_DLL //修改
但是编译成静态库,就不需要__declspec(dllimport)这个了,那我们怎么去掉呢?
我这个直接改了源码,就是直接把以前的宏定义注释掉,然后把他定义为空,但是这样
就修改了源码,不太好,但是暂时只想到这个方法。
3.2、
我这个版本2.2.6的工程只添加了编译动态库需要的外部库文件,没有对编译称静态库进行
配置,所以我们需要仿照编译成动态库的配置,同样把使用到的外部库如libpng.lib加入到
工程配置中。
想出的方法,不建议使用。
1、因为工程组织问题,导致cocos2dx库代码和外部扩展代码互相使用,
编译称动态库DLL会有很多编译错误和链接错误,如源码文件的互相引用。
2、一个同事说如果编译成静态库,就可以先编译,然后整个工程再链接,
这就和编译器的实现有关了。我也不太懂。
3、把cocos2dx工程库文件编译称静态库,需要做什么?
3.1、
编译称动态库DLL时,需要使用 __declspec(dllexport) 和 __declspec(dllimport)
用于库类和函数的导出导入。类似于下面的代码:
#elif defined(_WIN32) || defined(_WINRT) || defined(_WP8)
//#if defined(_EXPORT_DLL_)
//#define EXPORT_DLL __declspec(dllexport)
//#elif defined(IGNORE_EXPORT)
//#define EXPORT_DLL
//#else /* use a DLL library */
//#define EXPORT_DLL __declspec(dllimport)
//#endif
#define EXPORT_DLL //修改
但是编译成静态库,就不需要__declspec(dllimport)这个了,那我们怎么去掉呢?
我这个直接改了源码,就是直接把以前的宏定义注释掉,然后把他定义为空,但是这样
就修改了源码,不太好,但是暂时只想到这个方法。
3.2、
我这个版本2.2.6的工程只添加了编译动态库需要的外部库文件,没有对编译称静态库进行
配置,所以我们需要仿照编译成动态库的配置,同样把使用到的外部库如libpng.lib加入到
工程配置中。