我正在改进一个DLL模块,它充当Windows应用程序的一种插件。此插件与单个软件系列的各种版本兼容。现在,对于某些功能,我必须访问父软件的配置文件。由于不同版本的软件在不同的地方都有这些,所以我必须找出哪个版本加载了DLL。可以通过进程可执行文件名称(即abc_v1.exe、abc_v2.exe、abc_v3.exe)轻松辨别不同的版本。有没有办法获取加载DLL的进程的名称?我正在使用C++和一些基本的WinAPI命令,但不是ATL、MFC等。目前我正在使用它自己的SDK功能轮询父软件,但这需要打开连接。根据配置文件的内容,DLL不需要打开连接,所以我想知道在建立通信之前加载它的版本
我的应用程序使用一个版本的库(a.dll),我正在使用另一个DLL(b.dll),后者又使用我使用的同一库(a.dll)的旧版本。我正在通过嵌入list文件来构建应用程序。我使用的DLL也使用嵌入式list文件。我的WinSXS文件夹中有两个版本的库。我的应用程序无法加载适当版本的DLL。有一个单独的list文件(不嵌入到DLL中)是否有助于解决问题?解决方法是什么? 最佳答案 您的情况正是WinSxS应该解决的情况。它应该可以正常工作。或者:list文件指向同一版本,或者其中一个list文件没有正确嵌入,或者WinSxS中的共享程
伙计们,如果我在我的dll代码中覆盖全局新建和删除,这会覆盖用户代码新建和删除吗?我做了一个测试,显示用户new和delete不会受到影响。如果我想让用户代码new和delete被我的sdknew/delete替换,怎么做。模板类是什么情况。模板类定义包括一些新建/删除。用户代码可能会实例化它。那么,它可能会使用用户新建/删除,对吧? 最佳答案 不,在Windows上每个DLL都有自己的operatornew()/operatordelete()。但是你应该小心-如果某些DLLnew是一个对象,该对象应该使用相同的operatord
我有一个由许多DLL文件组成的游戏。其中一些DLL链接到同一个静态库(LIB)。所以像这样:Game.exe->Root.dll->Child.dll|||'->Common.lib(contains__declspec(thread))|'->Common.lib(contains__declspec(thread))Root.dll加载静态链接Common.lib的Child.dll。Root还静态链接Common.lib。因为Common是静态链接的,所以它直接编译到加载dll中(例如Root和Child)。Common.lib包含一个使用线程本地存储(TLS)的变量。__dec
当程序使用动态共享库时,它是完全加载DLL(这样您几乎可以在应用程序运行期间从磁盘中删除DLL)还是每次根据需要只加载DLL的一部分在应用程序的运行时生命周期内? 最佳答案 DLL被完全加载。DLL在几乎所有方面都与EXE相同;它们之间唯一的大区别是,DLL不可执行。它没有main()函数-thestartofaprogram. 关于c++-DLL是完全加载还是只加载部分功能?,我们在StackOverflow上找到一个类似的问题: https://stack
我编写的程序使用SFML,但运行时失败,因为缺少libgcc_s_dw2-1.dll。我正在使用tdm-gcc,但在我的计算机上的任何地方都找不到该文件,重新安装也无济于事,一个简单的helloworld程序运行良好,所以我不确定为什么它需要这个dll。这个可以在哪个mingw包中找到?我在该网站上进行了搜索,但找不到。如果我错过了一个明显的搜索结果,我深表歉意,但这实在令人沮丧!提前致谢,嗯。附言顺便说一下,我使用的是64位Windows7编辑:对不起,我忘了说我已经阅读了anotherquestion的答案。有同样的问题,但正如我所说,我无法在我的计算机上的任何地方找到该文件,在b
我想知道如何“打包”C++项目以供发布。它使用各种库,我不希望用户必须经历我所做的相同设置,将正确的文件放在正确的位置等。我很难研究这个,因为我不确定这个问题的技术术语。如果我在Linux上使用命令行编译,有没有一种简单的方法可以做到这一点? 最佳答案 您在Windows和Linux上的处理方式会有所不同,因为每个操作系统的处理方式都不同。我对Linux更熟悉,所以我将只回答Linux方面的问题。当您使用-l标志将可执行文件与库链接时,链接器默认查找正常的系统库目录,因此这里有四种方法。要求用户自行正确安装库。但是,听起来您不想那样
k8s之认证文件丢失报错failedtorunKubelet:unabletoloadbootstrapkubeconfig:stat/etc/kubernetes/bootstrap-kubelet.conf:nosuchfileordirectory解决方法一:重新生成一遍证书:备份并重新生成证书(这样会全部重置集群)cd/etc/kubernetes/pki/mkdirbackupmvapiserver.crtapiserver-etcd-client.keyapiserver-kubelet-client.crtfront-proxy-ca.crtfront-proxy-client.
我正在尝试检查我的路径中是否存在visualstudio编译器。我已将vc/bin目录添加到系统环境路径。当我打开Windows控制台终端时,我尝试从控制台调用cl.exe。我收到以下消息:Theprogramcantstartbecausemspdb140.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.这条消息到底是什么意思?我尝试按照此post中的说明进行操作,我运行bat文件,(此外,我在路径中手动添加dll目录)。但是我收到了同样的消息。 最佳答案
我正在开发一个大型的C++构建的库,该库最近有了显着的增长。由于它的大小,导致这种大小增加的原因并不明显。您对可以帮助确定增长来源的工具(msvc或gcc)有什么建议吗?编辑我尝试过的事情:转储最终的dll、obj文件、创建map文件并翻录它。再次编辑所以objdump和python脚本似乎已经完成了我想要的。 最佳答案 如果是gcc,objdump.如果是visualstudio,dumpbin.我建议对旧(小)库和新(大)库的工具输出进行比较。 关于c++-确定哪些目标文件导致.dl