草庐IT

C++ Qt MingW bad reloc 0xc address in section rdata

我在带有MingW编译器的Windows1064位上使用Qt5.5。我正在尝试在Debug模式下编译我的项目=>完美运行但是在Release模式下,我有这些错误:undefinedreferenceto`TileMap::XYToNode(int,int)const'undefinedreferenceto`TileMap::XYToNode(int,int)const'./release\perso.o:badrelocaddress0xcinsection`.rdata'collect2.exe:-1:erreur:error:ldreturned1exitstatus我尝试过cl

c# - log4net xmlconfigurator.configure需要使用dll内嵌的xml文件

我正在创建一个控制台应用程序(exe)并尝试使用log4net记录错误。如果我在main方法中给出以下任何命令,记录器工作正常:XmlConfigurator.Configure(newFileInfo(@"filepath\log4net.config"));或using(FileStreamfs=newFileStream("..\\..\\log4net.config",FileMode.Open)){XmlConfigurator.Configure(fs);}但我需要单独拥有log4net.config文件。所以我的问题是-我如何在我的主要方法中引用log4net.confi

c++ - 有没有办法预先测试 Windows exe 是否会因为缺少 dll 而无法加载?

如果您尝试在没有任何更新的情况下在Windows8.1上安装vs2015可再发行组件,它将无法安装。但是安装过程中guid在注册表中已经足够了,所以如果您运行一个程序来检查注册表中是否存在可再发行组件,您将通过该检查。如果您随后尝试运行一个使用vs2015编译的程序,该程序需要一些安装失败的dll,您将看到一个弹出窗口,显示“该程序无法启动,因为......”你知道该怎么做。我正在开发一个有这个问题的安装程序(使用NSIS),我试图找到一种方法来检测dll丢失问题,然后再运行.exe并获取弹出窗口。是否有任何我可以运行的命令行工具或任何我可以调用的NSIS函数可以在问题发生之前提示我解

c - 是否有来自低级库(如 kernel32.dll 或 ntdll.dll)的 wsprintf() 类型函数?

我正在编写一个低级记录器函数,它将文本字符串附加到文本(日志)文件的末尾。要求是此函数不应调用来自DLL的任何WinAPI,这些DLL可能尚不可用于该进程——例如当它从DllMain调用时处理程序。换句话说,它不能使用除了保证加载到任何用户模式进程中的库之外的任何库,即kernel32.dll或ntdll.dll.我可以通过CreateFile、WriteFile、CloseHandle、HeapAlloc、HeapFree等均来自kernel32.dll。问题在于格式化输出字符串。例如,我需要添加一些额外的(自动生成的)详细信息,例如当前时间、进程ID、sessionID等。我通常会

windows - 如何静态获取Windows系统调用程序集?

出于研究目的,我试图在Windows系统调用中找到特定模式。到目前为止,我一直在研究Windowsdll,例如ntdll.dll、user32.dll等,但它们似乎只包含准备跳转到系统调用的包装代码.例如:moveax,101Ehleaedx,[esp+arg_0]movecx,0calllargedwordptrfs:0C0hretn10h我猜calllargedwordptrfs:0C0h指令是链中的另一个网关,它最终通向实际的程序集,但我想知道我是否可以直接到达该程序集。 最佳答案 您正在查找错误的dll。系统调用在ntosk

python - 在 Windows 上激活 Python 虚拟环境

这个问题在这里已经有了答案:Pythonvirtualenvquestions(6个答案)关闭4年前。注意:人们将此标记为与另一个问题重复,但事实并非如此。我的virtualenv有问题,我无法解决它。这可能与VisualStudio的设置方式有关。我一直在关注这个优秀的tutorialonflask我尝试在Windows上激活虚拟环境时遇到问题。你如何执行$venv\Scripts\activate?这应该来自命令提示符还是Powershell?我使用VisualStudio作为我的IDE。它为您创建了一个VS解决方案,该解决方案具有一个基本的flask应用程序。在创建应用程序的过程

c++ - 查找导致依赖性的目标文件

我的情况有点特殊:我有一个应用程序在使用MSVC编译时可以编译、链接和启动。我现在正在重新编译它clang-cl,这会导致它编译、链接和崩溃。感谢DependencyWalker,我发现正在加载意外的DLL。在我的例子中,找到std::allocator::allocator(allocatorconst&)的符号.有了这个,我目前有以下信息:需要这个符号的DLL暴露符号的DLL给出问题的符号为了记录错误,我应该能够将代码减少到可接受的大小。上传整个专有代码库不是一种选择,上传20行的.cpp文件是一种选择。为了减少,我需要找到需要这个符号的.cpp/.obj文件。从那里开始,减少它变

c++ - 完全特化的模板和 dllexport

Microsoft说:“模板不能与使用__declspec(dllimport)或__declspec(dllexport)声明的函数一起使用。”(link)。这是什么意思?我可以导出一个函数,该函数具有完全专用的模板类引用作为参数吗? 最佳答案 那不是dllexport/dllimport-特定问题,它是模板的一般问题-目前只有一个编译器实现了export的方法模板,参见ComeaustemplateFAQ了解详情。然而,完全专用的模板是不同且具体的类型,并且基本上可以与__declspec一起使用。扩展名,但有limitatio

c++ - 多个应用程序入口点

最近我试图通过为已经具有主入口点(它是控制台exe)的应用程序创建一个额外的(DLLMain)入口点来向现有二进制文件添加单元测试。该应用程序似乎可以正确编译,尽管我无法将它用作我的python单元测试框架中的DLL,所有将exe用作dll的尝试都失败了。有没有人在添加额外的应用程序入口点方面有任何想法或经验,以及关于为什么这行得通或行不通的任何输入? 最佳答案 为了实现你想要的,你应该解决一些问题:exe必须有重定位表(使用链接器开关/FIXED:NO)exe必须导出至少一个函数-很清楚如何做到这一点。我建议使用不带某些开关(/h

windows - 我可以安全地重命名/移动一个已经被进程加载的 dll 吗?

我有一个由进程加载和文件锁定的dll,我想用更新的版本更新它。我正在寻找一种替代方法来终止进程以在更新dll之前释放文件锁。现有的事件进程仍然使用旧版本是可以的,只要新实例化的进程采用新逻辑即可。似乎我可以简单地重命名/移动dll,并且实时进程似乎仍然运行良好。这样做安全吗?如果dll的代码已经加载到进程中,为什么还需要锁定dll? 最佳答案 移动任何随机应用程序使用的所有dll并不总是可以的。某些应用程序,如asp.net,使用影子副本概念,它们实际复制dll并使用副本让您可以自由修改原始文件。在asp.net的情况下,如果您修改