草庐IT

c - DLL 函数未导出 : Unable to find an entry point named TestFunc

我正忙于了解一点点C/C++,并与C#互操作。我已经检查了几个创建简单的Win32DLL并从C#使用它的示例,但是当我尝试调用我的DLL时,我收到运行时错误:“无法找到名为TestFunc的入口点”。我的DLL看起来像这样,我从一个Win32DLL项目创建它,带有空项目选项:标题:__declspec(dllexport)intTestFunc(char*,char*,char*);代码文件:#include"stdafx.h"#include"TestLib.h"__declspec(dllexport)intTestFunc(char*arg1,char*arg2,char*arg

c++ - DLL依赖问题/SetDLLDirectory

我有以下情况,想不出什么好办法。我在C:\ProgFiles\MyApp中安装了一个C++应用程序(app.exe)。它需要一堆DLL,我安装在C:\ProgFiles\MyApp\bin中。我想将它们放在一个子文件夹中,因为它们太多了。现在,当我启动app.exe时,需要让Windows知道所需DLL的位置。过去我为此使用PATH环境变量,但我不能再这样做了,因为我将使用单独的安装程序创建另一个应用程序,它使用许多具有相同名称的DLL。我想在应用程序的开头调用SetDLLDirectory-但我忘记了,因为缺少所需的DLL,它在到达那里之前就失败了。有什么建议吗?

windows - 复制 Windows XP 上正在运行的进程使用的 dll 是否安全?

这是在WindowsXP上。我有一个正在运行的进程(我想保持运行)。如果我复制它使用的dll(例如,将其替换为较新的版本),这是否会导致正在运行的进程出现问题,或者代码是否已经加载,所以这无关紧要? 最佳答案 您不应该复制正在运行的进程正在使用的dll。为了替换dll,需要将其标记为删除并在下次重新启动时替换。如果您希望手动执行此操作,则需要停止该过程。如果您可以复制它-那么dll没有像您怀疑的那样被使用,如果它被延迟绑定(bind)那么您可以在一个过程中复制它进程没有主动锁定它的时间-并且提供dll的内部结构对事件进程没有任何不利

c - 没有它们如何获取 GetProcAdress 和 LoadLibrary?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion假设我没有导入.lib库我希望一切都以原始方式进行,通过手动编写调用(如汇编或纯c)GetProcAdressLoadLibrary是winapidll的一部分通常加载dll并获取指针对于我需要调用这两个函数的函数,但是因为我没有得到它们我可以用什么来获得它们?这有点像悖论,可能可以通过其他一些机制来解决,但是这里我缺乏知识,我不知道这个机制是什么,有人可以解释一下吗?

c++ - LoadLibrary() dll 的相对地址

我正在尝试在Windows的代码中加载一个dll,我使用LoadLibrary()函数成功加载了我的dll,但我有一个问题,我给出了我的dll的路径,如:LoadLibrary(C:\\path\\to\\my\\dll);我想知道我是否可以提供我的dll的相对路径。我的意思是例如:LoadLibrary(.\mydlldirectory\mydll.dll)这可能吗?如果没有,我如何开发我的项目,它可以在不改变不同机器上的dll路径的情况下移植? 最佳答案 它很可能会失败,因为您在第二次调用LoadLibrary时忘记转义反斜杠。

c++ - 如何正确终止 dll 中的挂起线程?

大家好,我有一个包含错误的第三方库。当我调用一个函数时,它可能会挂起。库函数在dll中被调用。我决定将调用移到线程中并等待一段时间。如果线程完成,则确定。如果不是——我应该强制终止它。此处的简化示例:unsignedCounter=0;voidf(){HANDLEhThread;unsignedthreadID;//Createthesecondthread.hThread=(HANDLE)_beginthreadex(NULL,0,DoSomething,NULL,0,&threadID);if(WAIT_TIMEOUT==WaitForSingleObject(hThread,50

c - 有效地为不同的 Windows 版本使用不同的 API

我面临着使用可用的新Windows运行时功能的需要,并回退到新功能不存在的旧功能。代码路径对性能至关重要。如果平台(Windows8/WindowsServer2012)提供,我需要调用GetSystemTimePreciseAsFileTime,如果不存在较新的版本,则回退到GetSystemTimeAsFileTime。我知道我可以使用LoadLibrary和GetProcAddress加载GetSystemTimePreciseAsFileTime如果失败,回退到GetSystemTimeAsFileTime。我担心通过另一层间接调用像这样对性能至关重要的东西对性能的影响。是否有

c++ - 为什么 std::vector::at() 即使启用了优化也需要边界检查?

Windows中的libstdc++-6.dll有问题。这段代码:#include#includeintmain(){std::vectorx(10);std::cout编译很好,但是当我运行它时,我收到一条错误消息说Theprocedureentrypoint_ZSt24__throw_out_of_range_fmtPKczcouldnotbelocatedinthedlllibstdc++-6.dll我的问题是不是如何解决这个问题(这很可能是dll的错误版本,我只需要修复PATH)。然而,这让我意识到了一些意想不到的事情:当我打开优化时,上面的代码运行良好(不管错误的dll),即

windows - 从 DllMain 调用 LoadLibrary

MSDNsays:ItmustnotcalltheLoadLibraryorLoadLibraryExfunction(orafunctionthatcallsthesefunctions),becausethismaycreatedependencyloopsintheDLLloadorder.ThiscanresultinaDLLbeingusedbeforethesystemhasexecuteditsinitializationcode.我试图从DllMain调用LoadLibrary但没有任何反应。我看到的唯一问题是加载的DLL将在我的DllMain的其余部分执行之前使用我的

windows - 在哪里可以找到丢失的 DLL

一个基本的缺失DLL问题...我正在尝试使用Py2Exe来打包我的Python程序,该程序使用了wxPython。Py2Exe由于缺少DLL而不断失败,但我不知道在哪里可以找到它们。我试过搜索我的整个C:驱动器,但在任何地方都找不到它们,这告诉我它们丢失了,而不仅仅是未注册。谷歌搜索也没有帮助我找到它们,除非通过狡猾的“安装魔法缺失DLL(我们保证没有垃圾软件;)”网站。我希望有人能发现这些DLL之间的联系并告诉我它们来自哪里。这里有一些-每次我告诉Py2Exe排除一个DLL它说我错过了一个不同的并且列表似乎永无止境:api-ms-win-core-libraryloader-l1-2