虽然DLL互相调用啊啥的玩得不少了,但是其实没有认真研究过符号和__declspec(import)这类东西之间的关系。今天碰巧遇到了,就稍微看一下。
月度归档:2013年09月
使用Ado访问IRowset的数据
昨天使用OLEDB原始的方式列出了系统里安装的所有OLEDB Provider,要绑定啊啥的实在很麻烦,所以就想能不能用ADO来搞。昨天弄了一下无果,今天接着,把它弄出来了。
好麻烦的OLEDB数据访问
对,我还只是说数据访问。直接给我一个ISourcesRowSet,还没让我去连数据库去发SQL语句啥的。
引用计数和对象的有效性
之前搞东方弹幕游戏OGG版本的时候,用了这么一套机制:实现自定义的CreateFileA、ReadFile、SetFilePointer、CloseHandle这些函数,然后替换掉程序对这些API的调用。如果CreateFileA打开的文件是thbgm.dat,那么就创建一个读取OGG文件的对象,然后把对象指针加入到一个列表中,并返回给程序;如果调用ReadFile的时候送入的HANDLE是在列表中的某个对象,就执行对象上的Read操作;SetFilePointer同理;如果调用CloseHandle的时候送入的是列表里的某个对象,就把对象从列表中删除,然后delete掉它。
.net 2.0下往流输出文本多了抛异常
前天在群里聊天的时候,喵喵提到.net 2.0平台下,有个控制台程序运行时间久了,呃,要说有多久可能一个月那种程度吧,崩了。而且是崩在Console.Write里面。说上网找了以后说是.net平台自己有问题。
第二天有空的时候,我自己试验了一下,确实很坑,我开了个文本文件(FileStream),然后以它创建一个StreamWriter,之后往里面写了三四个G的数据,写一半的时候就直接抛出了异常,异常信息和喵喵描述的一致。
curl_easy_perform卡着了
之前想做个挂stage1st论坛在线时间的工具,用C#写出来以后虽然用着也确实可以登录和浏览,但是用mono在vps的linux系统上跑,内存占了实在是有点多,想到vps本来内存就这么小,还跑了一大堆奇怪的服务,最后作罢。
但是果然想想还是不甘心,于是就又操起C++来弄,调用了CURL函数库来搞,这样windows和Linux下就都可以使用了。弄好以后也确实可以运行,于是就这么挂着。
为了详细知道这工具现在在干什么,所以我让它输出当前动作的信息。挂了几天之后,发现好像没有新的信息输出了。用gdb附加上去看调用栈,卡在curl_select里面了(和自己的代码的接口是curl_easy_perform)。这个时候的工具在输出信息的时候还不会附上当前的时间,所以也不太确定到底什么时候出的问题。于是我就改了一下代码,在输出的地方加上了时间,然后挂着。今天下午又发现它卡着了,看了时间,卡了2个多小时了。用gdb再附加上去,还是那个地方卡着。