草庐IT

c++ - 优化

我正在尝试使用OpenGL渲染3个四边形(1个背景图,2个Sprite)。我有以下代码:voidGLRenderer::onDrawObjects(longp_dt){float_log_last_time=ELAPSED_MS;fprintf(stdout,"--startingdraw:%.4f,dTime:%.4f\n",ELAPSED_MS,ELAPSED_MS-_log_last_time);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);for(std::vector::iteratoritr=m_displayList.b

c++ - 使用 GCC 将 C++ 应用程序静态编译为二进制文件

如何在面向unix的Ubuntu机器上使用GCC静态编译应用程序?我将如何定位32位/64位机器和具有不同版本GLIBC或任何unixC++应用程序通常依赖的机器?然后我想以二进制形式分发这个应用程序并在unix机器上运行它而不需要从源代码编译。同样,我可以compilethisapponWindowssuchthatitwillrunonunix? 最佳答案 要编译它以便它可以在Linux上运行,只需像这样编译它:g++-omyappmyapp-a.copmyappb.cop-Lmylib1这应该适用于大多数Linux版本,以及某

c++ - 奇怪的 Unresolved external 编译 DLL

我正在尝试按照本网站上的说明进行操作:http://support.microsoft.com/kb/q168958代码如下:#include#includenamespaceTest{templateclassTestBuffer{private:TYPE*m_pData;size_tm_uSize;public:TestBuffer(size_tuSize):m_pData(NULL),m_uSize(0){m_pData=(TYPE*)malloc(uSize*sizeof(TYPE));}~TestBuffer(){if(NULL!=m_pData)free(m_pData);

c++ - SS_NOTIFY 和 WM_SETCURSOR

我正在尝试使用C++模拟对话框中的超链接。我正在使用设置了SS_NOTIFY的静态控件,以便用户可以单击该控件并转到网页:LTEXT"Caption2",IDC_SETTINGS,9,36,219,13,SS_NOTIFY通过设置SS_NOTIFY,我可以拦截点击,因为它是针对静态注册的:caseIDC_STC_URL:ShellExecute(NULL,"open","http://google.co.uk",NULL,NULL,SW_SHOWNORMAL);returnTRUE;我还通过拦截WM_SETCURSOR消息将光标更改为手:caseWM_SETCURSOR:POINTpt

c++ - GetUserNameExA 函数无法在系统启动时(GINA)提供用户详细信息?

我正在使用C++win32API。我尝试使用GetUserNameExA()获取用户详细信息;我已经将此功能用于系统登录对话框源(GINA)。在我的日志文件中,它给出了CN=ComputerName,CN=Computers,DC=JEGAN,DC=COM"。但它是在登录系统后使用的,那时它会在我的其他解决方案中提供用户详细信息,如"CN=sanju,CN=USERS,DC=JEGAN,DC=COM"。我只想要用户详细信息,但它在登录时提供了系统详细信息,我怎样才能在登录时获得用户详细信息?注意:我已经尝试过ADSI、LDAP功能和目录服务无法使用。所以建议任何其他系统功能。

c++ - Windows.h 线程关联

除了输出不是我期望的那样,下面的代码确实可以编译和运行。我希望程序创建n个线程(取决于可用多核的数量)并运行程序末尾的一个简单例程以输出“测试:”后跟数字1-10。相反,我得到的是一个输出,它确实写了一些数字,但它最多不会超过两个,而且函数threadmain似乎没有完全在一个线程上运行,但它在其他方面输出了一些测试:012。我知道多线程会破坏输出,但我应该在屏幕上的某处看到数字3、4、5、6、7、8、9,但它没有显示。#defineWIN32_LEAN_AND_MEAN#include#include#include#includeHANDLE*m_threads=NULL;stat

c++ - StretchDIBits 仅在特定图像尺寸下失败

我正在使用StretchDIBits打印图像,但当图像由于某种未知原因处于特定尺寸时打印失败。图像数据以24位BGR格式从其他一些图像源加载到一个无符号整数数组中。我已经验证图像和缓冲区完全正常,因为就像我说的那样,它在某些尺寸下工作但根本不工作。我正在测试的当前尺寸是638x1014。如果我将高度更改为1013,它工作正常,但出于某种原因,如果它是1014,它就会完全失败。这里有一些代码向您展示了它是如何设置的:unsignedint*buffer=newunsignedint[width*height*3];//Fillbufferwithimagedata...BITMAPINF

c++ - 获取windows桌面路径

这是我的代码:#include#include#includeusingnamespacestd;intmain(){LPTSTRmyPath=NULL;SHGetSpecialFolderPath(0,myPath,CSIDL_COMMON_DESKTOPDIRECTORY,FALSE);if(myPath!=NULL)cout但是myPath什么都不返回。我只想获取桌面路径。我使用的是Windows764位系统。 最佳答案 你需要给它空间来放入数据:T_CHARmyPath[MAX_PATH];SHGetSpecialFolde

c++ - 比 boost::file_mapping 更快的读取文件的方法?

我正在编写一个对延迟敏感的应用程序,它在初始化时读取文本文件。我分析并重写了我所有的算法,这样我85%的执行时间来自以下几行:boost::interprocess::file_mappingfile(Path,read_only);boost::interprocess::mapped_regiondata(file,read_only);我在Windows上写这篇文章-有没有更快的方法将文件映射到内存中?便携性不是问题。 最佳答案 您可以只使用Win32的native函数,但我认为您不会节省很多,因为boost不会增加很多开销:

c++ - 以编程方式分析故障转储

是否有任何api可以加载故障转储、符号存储中的符号,然后允许以编程方式访问信息?我想创建一个工具来自动处理故障转储并根据它们生成报告。 最佳答案 使用Windbg的命令文件来设置您的配置,然后运行​​!analyze。将windbg设置为输出到文件(如此处所述:windbg:Commandoutputtotextfile)然后您可以尝试对输出进行排序、分类等。!analyze可以很好地分析大多数崩溃。如果不能,我怀疑你会用自己的代码做得更好,除非你有很多按程序分析崩溃日志的经验(我从来没有尝试过,虽然我对什么有一个不错的想法寻找,我