将#include ”hidsdi.h”改为
extern ”C”
{
#include ”hidsdi.h”
}
可能库hid.lib是C风格,不是C++风格的。C++风格的可以支持函数重载,所以,编译期间的C++函数名会加上类型修饰部分,看起来有很多@?这样的字符,而C风格的,不支持函数重载,编译期间的函数名与原来的函数名一样。
存档在 ‘IT’ 分类
编译错误:unresolved external symbol “void __stdcall HidD_GetHidGuid
2010年4月19日Couldn’t open mixer device
2009年12月29日在初始化音频设备时,出现如下错误:Couldn’t open mixer device /dev/sound/mixer
检查后发现是默认环境为开发板,因而出现了路径不匹配,可以添加符号链接解决。
查看发现PC端mixer目录为 /dev/mixer,而程序需要/dev/sound/mixer目录,为解决问题,则在/dev下建立sound/目录,并创建/dev/mixer的链接:ln ../mixer mixer 并且修改/dev/sound/mixer的属性:chmod 777 mixer.重新运行又出现问题:Couldn’t open mixer device /dev/sound/dsp,解决方法和前面一样。
反码补码与绝对值
2009年11月20日反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
0的原码、补码都是0,正数的原码、补码可以特殊理解为相同,负数的补码是它的反码加1。
举例:
1的源码:0000 0001 -1的源码:1000 0001
1的反码:0000 0001 -1的反码:1111 1110
1的补码:0000 0001 -1的补码:1111 1111
注意:计算机储存有符号的整数时,是用该整数的补码进行储存的。
因而:负数的绝对值=负数的补码取反然后加一;
即:若X<0,则 |X| = ~X + 1 ,此处X 在计算机中储存时是补码。
基于万亿次集群的matlab并行平台构建与FDK重建算法的并行实现
2009年11月19日系统V共享过程中须注意问题
2009年11月9日V系统贡献原理及其详细介绍请点击这里查看,本文不作详解。http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html
需注意:
1.指定共享文件:如/etc/shm/shmtest 此处shmtest需要自己建立;
2.创建IPC通讯ID值:key=ftok(char * fname,int id),fname就时你指定的文件名,id是子序号,值为1-255之间。
显卡电容爆掉
2009年10月31日 这几天电脑突然出现一个现象多次:鼠标突然卡住,不能移动,然后显示屏闪一下,或是突然黑屏,然后又恢复。
» 阅读更多: 显卡电容爆掉
几种音频格式码率与复杂度
2009年10月21日AC3:
算法比较复杂。AC3的数据流量(也就是音频码率)标准的是384kbps,它还兼容两声道的立体声和单声道等,AC3两声道码率只有128kbps,这其实就是MP3的声音数据码率。最高细节的AC3标准,码率在448kbps,因其压缩合理,体积不大,所以被DVD广泛采用作为电影音频的存贮标准。
MPA:
MPA是一種不包含視頻的音頻格式,源於MPG格式,屬於MPEG1的壓縮形式。 MPEG-1文件格式包含MPEG音頻第一代,MPEG-1的第二代和第三代(也稱MP3)。
» 阅读更多: 几种音频格式码率与复杂度
Linux系统内存共享
2009年10月20日最近用到内存共享,收集整理了些资料,做了个简单的对比,详细的原理、应用及例子请点击表格下面的连接。
| mmap系统调用 | 系统V共享内存 | |
| 获取共享
内存ID |
#include <sys/mman.h>
fd=open(name ,flag,mode); if(fd<0) …. |
#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg);
|
| 映射内存 | ptr=mmap(NULL,len, PROT_READ|PROT_WRITE,
MAP_SHARED , fd , 0);
|
void *shmat( int shmid , char *shmaddr , int shmflag ); |
| 解除映射 | int munmap( void * addr, size_t len ) ;
|
int shmdt( char *shmaddr );
使进程中的映射内存无效化,不可以使用。但是保留空间 |
| 其它 | 同步:
int msync ( void * addr , size_t len, int flags);
|
控制:
shmctl( shmid , IPC_STAT , &buf ); // 取得共享内存的状态 // 删除共享内存–删除共享内存,彻底不可用,释放空间 |
获取操作系统语言实现自动切换多国语言
2009年9月30日以下是一个简单的例子:
<HTML>
<head>
<script>
var usr_language =navigator.userLanguage;
var languagetype;
var zhcn=’zh-cn’;
var zhhk=’zh-hk’;
var zhtw=’zh-tw’;
var enus=’en-us’;
» 阅读更多: 获取操作系统语言实现自动切换多国语言
VMware下linux磁盘空间扩容
2009年9月26日今天在搭建编译环境时,发现之前给虚拟机分配的15G空间只剩下2G多点,而新的平台搭建起来需要2G左右,这样空间就严重不足了。
决定给虚拟机扩大硬盘分配,却发现在VMware的setting中无法扩容,但是在VMware的安装目录下发现有vmware-vdiskmanager.exe(虚拟硬盘管理)程序,绿色版本的VMware可能没有。双击运行一闪而过,再次在CMD中以命令方式运行,发现其有许多参数,-c -d -k -n -p -r -x -R -q等,查看其说明,-x选项既是扩容选项:expand the disk to the specified capacity,需注意这里是指扩容到指定大小, » 阅读更多: VMware下linux磁盘空间扩容