Jan 7th, 10
/
最近遇到个奇怪的现象,在调试我的C#程序时,如果VS不打开“启动非托管代码调试”的话,序列化我的一个ApplicationConfig类就会报告“Unable to cast object of type 'X' to type 'X'”的问题,打开后万事大吉,但是无法进行暂停后编辑运行。
遇到这个问题后第一反应就是VS出问题了,重装系统后无法解决问题。
后GOOGLE到:http://www.google.cn/search?hl=zh-CN&source=hp&q=Can%27t+cast+type+X+to+X&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
发现其他人也遇到相同的问题,但具体问题不太一样。但大体看来是程序集出了问题。我选择清空项目然后重新编译,问题依旧,这就奇怪了。
最后偶然之间到我的编译目录下一看,清空后竟然dll文件还在。手动删除后,一切问题解决。
最后看来,还是DLL没有被正确删除造成的。那位什么没有被删除的DLL会影响随后的编译和调试呢?神奇了。
Feb 10th, 09
/
其实很简单,之前我还用钩子函数来解决,其实根本没必要。重写Form的方法就可以了。
[csharp]
const int WM_SYSKEYDOWN=260;
const int WM_KEYDOWN=256;
protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
{
if ((msg.Msg==WM_KEYDOWN)||(msg.Msg==WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Up:
MessageBox.Show("up");
break;
case Keys.Down:
MessageBox.Show("down");
break;
case Keys.Left:
MessageBox.Show("left");
break;
case Keys.Right:
MessageBox.Show("right");
break;
}
}
return true;
}
[/csharp]
补充:经实验此法仅能提取到KEYDOWN信息,而KEYUP信息被“吃”了,所以有些需要KEYUP事件的东西就不能做了。
最终在CodeProject找到一个类来处理这个事情,很方便:http://www.codeproject.com/KB/cs/globalhook.aspx
Dec 18th, 08
/
前段时间WinIO在我的新项目中总是初始化失败,有时候又是好好的,很让人费解。修改了源代码显示了很多调试信息后,也没有什么太多的收获。由于我们的工控卡必须要用这个库,所以没办法,只得停下脚步,细细研究一下问题所在。 Read More
Oct 2nd, 08
/
今天编译自己的代码,一句话:
fc->BoxSize=this->boxSize();
编译出错,gcc编译器说:
../VolumeRenderBox.cpp: In member function ‘osg::ref_ptr<osg::Group> VirtualSurgery::VolumeRenderBox::createVolumeRenderBox(osg::Vec3, double)’:
../VolumeRenderBox.cpp:218: 错误: 正在将呼叫转移到 ���A (无应答)
make: *** [VolumeRenderBox.o] 错误 1
太强了……发现gcc还可以呼叫转移,还无应答~~~真是绝了。
其实上一句话写错了,应该是
fc->BoxSize=this->boxSize;
整了一天的程序把成员变量都加括号了,呵呵。倒是这个编译提示真让人费解~~~
Feb 16th, 08
/
做C++的项目的时候最怕的就是编译速度缓慢,前段时间一直抱怨C++/CLI编译OSG项目速度很慢很慢,我以为是OSG的inline函数过多的问题,但确实也是这个问题,每次处理的时候都要处理很多的inline,造成了编译速度的缓慢,往往修改一个文件整个工程都要重新编译,那速度可想而知。但总也要有一个解决方案啊,以前知道预编译头能够加速工程的编译,但是我设置了预编译头,怎么还是那么慢呢?肯定是我使用方法不对。 Read More