zoukankan      html  css  js  c++  java
  • 一些问题

    Issue_1 :

    时间:

    2013/11/08

    描述:

    系统安装了CUDA v5.5,CMake创建vs2005 project的时候检测到CUDA,去掉勾选,编译opencv 时出现编译错误:

    1>f:cudacuda oolkitincludehost_config.h(92) : fatal error C1189: #error :  -- unsupported Microsoft Visual Studio version! Only the versions 2008, 2010, and 2012 are supported!

    原因:

    CUDA v5.5 不支持VS2005。

    解决:

    修改opencv root dir/cmakelist.txt,将129行的

    OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"         ON   IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_CUFFT          "Include NVidia Cuda Fast Fourier Transform (FFT) library support"            ON  IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_CUBLAS         "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_NVCUVID        "Include NVidia Video Decoding library support"                               OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS AND NOT APPLE) )

    修改成:

    if (0)
        OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"         ON   IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_CUFFT          "Include NVidia Cuda Fast Fourier Transform (FFT) library support"            ON  IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_CUBLAS         "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
        OCV_OPTION(WITH_NVCUVID        "Include NVidia Video Decoding library support"                               OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS AND NOT APPLE) )
    endif()

    Issue_2 :

    时间:

    2013/11/12

    描述:

    srand(time(NULL)); rand() 不随机,每次都是相同的数

    原因:

    srand需要一个种子,这里用time(NULL)返回值作为种子,time函数精度不高,如果两次调用随机数产生器的时间间隔很小的话,会出现每次都是相同的数的现象。

    解决:

    可以在随机数产生之前Sleep几十毫秒或者中其他值作为种子。

    Issue_3 :

    时间:

    2013/11/20

    描述:

    visual studio 2005环境变量 与 windows环境变量 不一致。

    原因:

    vs2005启动的时候会copy windows的环境变量,修改windows的环境变量不会影响到vs2005的环境变量。

    解决:

    修改windows的环境变量后重新启动vs2005.

    Issue_4 :

    时间:

    2013/12/11

    描述:

    在h文件中声明了:extern int gs_FeatureCount;

    在cpp文件中定义了:int gs_FeatureCount = 0;

    rebuild之后仍然提示:error LNK2001: unresolved external symbol "int gs_FeatureCount" (?gs_FeatureCount@@3HA)

    原因:

    声明和定义不在同一个namespace中,定义包含在namespace MiniOCR中,声明没有包含在内。

    解决:

    声明包含在namespace MiniOCR中。

    Issue_5 :

    时间:

    2014/02/11

    描述:

    fwrite/fread 返回0

    原因:

    1,fread读到了文件末尾;

    2,fread(buf,len,1,fp),filesize-curpos < len;

    3,fread(buf,1,len,fp),同时读写时,buffer没有被fflush进文件,所以无法读取;

    4,fwrite(buf,len,1,fp),buf长度小于len;

    5,fwrite(buf,1,len,fp),buf长度小于len,且发生越界。

    解决:

    计算好buf和file信息

    Issue_6 :

    时间:

    2014/02/20

    描述:

    vs2005在已有的solution中添加project,无法创建x64环境,显示错误:“This platform could not be created because a solution platform with the same name already exists”

    原因:

    solution已经存在一个x64的编译选项,不能再创建一个x64环境。

    解决:

    去掉“Create new solution paltforms”选项,如下图:

     

    Issue_7 :

    时间:

    2014/04/10

    描述:

    windows下mingw编译的程序无法在控制台中输出信息。

    代码:printf("hello world ");

    编译命令:gcc test.c -mwindows

    如上代码,编译链接无误,但是没有输出。

    原因:

    编译命令不对

    解决:

    编译选项修改成:gcc test.c -m32

    Issue_8 :

    时间:

    2014/06/06

    描述:

    在64位系统下使用CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID)枚举dll时有点问题,枚举进程本身是32位的则只能枚举到32位进程中的dll,枚举进程本身是64位的则只能枚举到64位进程中的dll。

    原因:

    在64位系统下,32位进程只能枚举到32位进程中的dll(这是限制),64位进程可以用CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID)枚举出64位进程中的dll,用CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32, dwProcessID)枚举32位进程中的dll。

    解决:

    在32位系统中只调用CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID),而在64位系统中则需要调用两次:CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID),CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32, dwProcessID)

    Issue_9 :

    时间:

    2014/06/27

    描述:

    创建D3D10/11设备时如果添加了类似D3D10_CREATE_DEVICE_DEBUG的flag,可能会failed。

    最新的D3D的很多函数是没有返回值的,以前一直很疑惑没有返回值怎么判断问题出在哪里,似乎也没有找到类似于DXGetLastError这样的函数。用了这个flag才知道,使用visual studio进行debug时,如发生错误会有详细的log输出在output窗口里面。各种详细方便!

    原因:

    安装最新的Windows SDK或者DX SDK。

    解决:

    安装最新的Windows SDK或者DX SDK。

    Issue_10 :

    时间:

    2014/07/29

    描述:

     在QT设计师中制作了一个窗口,其中有一个verticalLayout,里面有4个groupBox,每个groupBox中有几个radioButton,如图:。但是实际显示出来的是这样:
    groupBox中的控件被隐藏了。

    原因:

    groupBox里面放了其他控件的话需要给groupBox设置layout(布局)。

    解决:

    给groupBox设置layout(布局)。

    Issue_11 :

    时间:

    2014/08/12

    描述:

    qt编程中测试一个小问题,写了如下代码:

    class MyThread : public QThread
    {
    	Q_OBJECT
    public:
    	void Run()
    	{
    
    	}
    signals:
    	void sendThreadId(int threadId);
    public slots:
    	void getCommands(QString cmd)
    	{
    
    	}
    };
    
    class MyObject : public QObject
    {
    	Q_OBJECT
    public:
    
    signals:
    	void sendCommands(QString cmd);
    public slots:
    	void getOtherThreadId(int threadId)
    	{
    		qDebug()<<"other threadId is "<<threadId;
    	}
    };
    
    int main(int argc, char *argv[])
    {
    	QCoreApplication a(argc, argv);
    
    	MyThread thread;
    	MyObject object;
    	QObject::connect(&thread,SIGNAL(sendThreadId(int)),&object,SLOT(getOtherThreadId(int)));
    	QObject::connect(&object,SIGNAL(sendCommands(QString)),&thread,SLOT(getCommands(QString)));
    
    	return a.exec();
    }
    

      结果一堆链接错误:

    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall MyThread::metaObject(void)const " (?metaObject@MyThread@@UBEPBUQMetaObject@@XZ)
    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MyThread::qt_metacast(char const *)" (?qt_metacast@MyThread@@UAEPAXPBD@Z)
    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall MyThread::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyThread@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall MyObject::metaObject(void)const " (?metaObject@MyObject@@UBEPBUQMetaObject@@XZ)
    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MyObject::qt_metacast(char const *)" (?qt_metacast@MyObject@@UAEPAXPBD@Z)
    1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall MyObject::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyObject@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

    原因:

    qt要求这些class必须声明在头文件中,这样qt的代码生成功能才OK。

    解决:

    建立MyThread.h,MyObject.h,分别把相关代码放到这两个header中。

    Issue_12 :

    时间:

    2014/09/12

    描述:

    ndk-build 一直提示stl组件找不到!!

    原因:

    Application.mk没有放在jni目录下!!!!!!!不知道为什么这个mk没放到jni目录下并不提示错误,但是Android.mk不放在jni目录下就会出错。

    解决:

    Application.mk和Android.mk都必须放在jni目录下。

    Issue_13 :

    时间:

    2014/09/18

    描述:

    opencv库与QT库中的zlib有冲突,链接错误。

    原因:

    opencv_core模块有用到zlib,而QT_core中也有用到zlib,并且两个zlib不一致,QT中的zlib少了很多函数。同时链接zlib和qt则链接冲突,去掉zlib则opencv提示少了符号。

    解决:

    修改OpenCV的core组件中的persistence.cpp,其中有个宏USE_ZLIB,修改为#define USE_ZLIB 0,并且这个文件还要做些小修改,使其不再依赖zlib。

    最后链接opencv和qt的库,OK。

    Issue_14 :

    时间:

    2014/09/25

    描述:

    QT的编辑框在失去焦点后输入的全角符号会消失,QT无法显示Ø等特殊符号。

    原因:

    QT对于全角的支持似乎有一些bug。

    QT使用fromLocal8Bit或者toLocal8Bit等函数对于Ø等特殊符号会出错,因为local是中文gbk或者8859-1的编码体系中没有这样的特殊字符。

    解决:

    全角问题无法修正,只能通过forceOutEvent进行手动修正。

    特殊符号问题,用的是QString::fromWCharArray(L"Ø")解决的。也许可以setlocal或者其他手段设置QT的local编码格式为为utf-8修正此问题。

    etc…

  • 相关阅读:
    51nod 1127 最短的包含字符串
    hdu 2197 本原串
    hdu 2160 母猪的故事
    hdu 2594 Simpsons’ Hidden Talents
    自旋锁原理及java自旋锁
    Java中CAS详解
    dump相关
    多线程设置线程超时思路
    kafka遗忘点
    Java 和 HTTP 的那些事(四) HTTPS 和 证书(转)
  • 原文地址:https://www.cnblogs.com/xylc/p/3414655.html
Copyright © 2011-2022 走看看