1、carbide开发dll时出现诡异的错误。 .def文件和有文件以及源码不一致。
一顿暴力解决了(不知道咋解决的)
不过最终懂了开发dll的一些问题,比如定稿,lib与dll的关系。
2、手机的栈比较小,我在开了一个10k的TBuf。在模拟器上运行正常,结果在手机上就是k3
错误。 通过打log跟,发现这里的错误,改成1k。 YES
3、在dll中不能有全局变量。只可以存在全局常量(不知对不,反正将一个 全局的变量前加了const就编译
通过了,当然这个变量就应该是const的)
4、程序推出 报cone 36
解决方法:
有R类没有关闭。原因用HTTPEngine 没有RSocketSer 句柄,得需要RHTTPSession 反向获得。
RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo();
RStringPool pool = iHttpSession.StringPool();
THTTPHdrVal val;
TBool ret = connInfo.Property(pool.StringF(HTTP::EHttpSocketServ,
RHTTPSession::GetTable()), val);
RSocketServ socketServ;
RConnection *connection = NULL;
if (ret)
{
socketServ.SetHandle(val.Int());
ret = connInfo.Property(pool.StringF(HTTP::EHttpSocketConnection,
RHTTPSession::GetTable()), val);
if (ret)
{
connection = REINTERPRET_CAST(RConnection*, val.Int());
}
iHttpSession.Close();
if (connection)
{
// connection->Close(); //注意这里不注释掉,将会报 K0错误。
}
socketServ.Close();
}
else
{
iHttpSession.Close();
}
5、dll的capacibility <= exe(调用dll的)的capacibility
最好相等就行了。
...