草庐IT

c++ - MingW 静态库链接 - SFML 2.1

我正在尝试让SFML2.1与MingW一起工作,但它导致了问题。我在MingW编译器中的编译行是:g++-ID:\SFML-2.1\include-LD:\SFML-2.1\libmain.cpp-lsfml-graphics-lsfml-window-lsfml-system我正在尝试链接.a文件(这是否意味着我应该在编译行中添加一些东西?)。代码如下:#includeintmain(){//createthewindowsf::RenderWindowwindow(sf::VideoMode(800,600),"Mywindow");//runtheprogramaslongast

c++ - 如何在 Visual Studio 中查找静态 c/c++ 库中的函数

我有一个应用程序和一个静态库。该库似乎构建得很好-它肯定编译我的foo和bar和geewhizz函数很好,并且创建静态库没有任何错误或警告。但是,当应用程序构建并链接到静态库时,它设法链接到函数foo和bar但找不到函数geewhizz。我如何判断geewhizz是否进入了图书馆?我看不到库的任何/map选项,就像用于构建应用程序的那样。并且在构建应用程序时使用\map选项是没有意义的,因为它找不到我的geewhizz函数,并且没有根据报告它。我正在混合使用C和C++,我怀疑可能是函数名称重整/翻译问题或调用约定问题导致了问题,所以我认为包含函数列表图书馆应该能够阐明这一点。但是,如果

c++ - 减少具有相同优先级的线程之间的上下文切换

我正在编写一个使用第三方库执行繁重计算的应用程序。这个库在内部实现并行并产生给定数量的线程。我想运行这个库的几个(动态计数)实例,因此最终会严重超额使用cpu。有什么方法可以增加进程中所有线程的“时间量”,例如所有具有正常优先级的线程很少进行上下文切换(yield),除非它们通过例如显式地yield信号量?这样我就可以避免超额使用CPU的大部分性能开销。请注意,在这种情况下,我不关心线程是否饿了几秒钟。编辑:执行此操作的一种复杂方法是​​手动执行线程调度。枚举具有特定优先级(例如正常)的所有线程。暂停所有这些。创建一个循环来恢复/暂停线程,例如40毫秒,并确保没有运行比当前CPU计数更

c++ - C 将参数作为空指针列表传递给从 LoadLibrary() 导入的函数

我遇到的问题是我想创建一个通用的命令行应用程序,该应用程序可用于加载库DLL,然后调用库DLL中的函数。函数名称在命令行上指定,参数也在实用程序命令行上提供。我可以从使用LoadLibrary()函数动态加载的DLL访问外部函数。加载库后,我可以使用GetProcAddress()获取指向该函数的指针。我想使用命令行上指定的参数调用该函数。我可以将void-pointer-list传递给由LoadLibrary()函数返回的函数指针,类似于下面的示例吗?为了简化示例代码,我删除了错误检查。有没有办法让这样的东西工作://SomewhereinanotherdllintDoStuff(i

c++ - ldexp 应该正确舍入

我对MSVCldexp的行为感到有点惊讶(它发生在VisualStudio2013中,但也发生在至少到2003年的所有旧版本中......)。例如:#include#includeintmain(){doubleg=ldexp(2.75,-1074);doublee=ldexp(3.0,-1074);printf("g=%ge=%g\n",g,e);return0;}打印g=9.88131e-324e=1.4822e-323第一个g奇怪的圆了...它是2.75*fmin_denormalized,所以我绝对期待第二个结果e。如果我计算2.75*ldexp(1.0,-1074),我会正确

c++ - 独立的共享库

我需要创建一个共享库,其自身的依赖项(包括libc/libstdc++)必须静态链接到它以生成独立的二进制文件。我试着这样做g++-c-fpic-ofoo.ofoo.cppg++-static-shared-ofoo.sofoo.o失败:/usr/bin/ld.bfd.real:/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbeginT.o:relocationR_X86_64_32against`__TMC_END__'cannotbeusedwhenmakingasharedobject;recompilewith-fPI

c++ - COM 初始化和清理是否适合函数级粒度?

考虑编写一个可重用的自定义函数,在其函数体内创建COM对象并调用某些COM接口(interface)的方法。为了使其正常工作,必须调用CoInitializeEx和匹配的CoUninitializeAPI。在函数体内部调用那些COM初始化和清理API会向调用者隐藏COM实现细节,同时也会减轻调用者的负担。但是在函数体内调用CoInitializeEx和匹配的CoUninitialize是否被认为是一种好的编码习惯?在函数粒度级别调用那些COM初始化/清理函数是否意味着每个函数调用的开销太大?这种设计还有其他缺点吗? 最佳答案 这是一

c++ - 如何确保不同的 C++ 代码库使用相同的宏?

我们正在开发两个C++代码库,我们称之为A和B,A是一个构建为一个库,并将头文件.h和.a文件分发到B。假设A中有Lock.h文件如下://Lock.hincodebaseAclassLock{......#ifdefTRACK_THREAD_OWNER_FOR_DEBUGvirtualintGetLockOwner();#endif......private:CriticalSectionsection;#ifdefTRACK_THREAD_OWNER_FOR_DEBUGintthreadOwner;#endif};//Caller.ccincodebaseB#include"xxx

c++ - 是否有用于 C++ 的并发容器库

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Isthereaproductionreadylock-freequeueorhashimplementationinC++我正在寻找无锁容器的实现:队列堆栈HashMap等...如何阻塞容器:阻塞队列阻塞堆栈有没有好的图书馆?我不想编写这些数据结构......我更愿意使用已经过社区测试的东西。

c++ - Qt Creator/QMake 链接库

我正在使用SFML,我想结合使用QtCreator。当我手动编译时,我将以下参数提供给链接器-lsfmlsystem-lsfmlwindow。如果我使用QtCreator和(我认为)QMake,我该怎么做? 最佳答案 只需添加LIBS+=-L/path/to/sfml-lsfmlsystem-lsfmlwindow到.pro文件。您可以使用QtCreator从侧边栏的“项目”View打开项目文件,或者通过Ctrl-K搜索它。(顺便说一句,侧边栏不是左边的图标列表,它是右边的Pane,可以用Alt-0显示/隐藏。)