Thursday, March 01, 2007

SAGE 1 核心底层70%完工

呼,接下去最大的困难是Linux环境下的调试了。不知道那个底层够不够健壮。

顺便提一下碰到的DLL包装上的问题。
一开始生成.dll却不生成.exp和.lib导入库,最后搜破头,终于发现犯了小白错误
没有__declspec(dllexport)定义dll的调用接口。然后写上了发现出来一堆warning,最后排到后来是STL的数据也需要dllexport……这个怎么弄……。最后网上搜了半天还是disable warning的解决方案。
所以Windows下DLL包装要:

# define SAGE_DECLSPEC_IMPORT __declspec(dllimport)
# define SAGE_DECLSPEC_EXPORT __declspec(dllexport)
# define SAGE_API SAGE_DECLSPEC_EXPORT
#pragma warning (disable : 4251)

其中C4251是STL需要dllexport的警告,如果显式声明就要把STL里几乎所有的东西都声明一次了……。哎,c++还是不够美啊,只能粉饰太平眼不见为净了。
而Linux下包装DLL估计就要写DEF文件了……

No comments: