Articles of DLL

导入vtk时Python DLL导入错误

我需要在我的Windows 10机器上的python中使用VTK库(版本5.10,因为我正在处理现有的代码),但是我无法pipe理导入它没有DLLImport错误: Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import vtk Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\site-packages\vtk\__init__.py", line 139, in <module> __helper.refine_import_err('qvtk', 'vtkQtPython', exc) File "C:\Python27\lib\site-packages\vtk\__helper.py", line 32, in refine_import_err raise […]

GCC – 链接到另一个文件夹中的库工作,但二进制文件不会运行

我正在一个C ++项目,生成几个EXE和几个DLL。 为了整洁,我想要在Lib文件夹中生成这些DLL,所以构build的项目将如下所示: MyProject —-myExe1.exe —-myExe2.exe —-Lib —-myLib1.dll —-myLib2.dll 我能够成功地获得内置到Lib文件夹中的DLL,并且我能够在EXEs的链接命令中使用-L..\bin\Lib成功链接到新位置中的DLL。 但是,当我去实际运行的EXE,他们抱怨说,他们无法find有问题的DLL。 从我做的研究看来,即使我可以链接到其他文件夹中的库, 加载它们仍然需要它们与二进制文件在同一个文件夹中。 GCC,链接库,找不到? 表明这只是事情的方式,但是提到“系统必须能够finddll;即它必须位于当前工作目录中,path中的目录或其目录中必须被添加到一个特殊的环境variables用于这个东西“。 什么“特殊的环境variables”被引用(我假设它不是%PATH%或评论将没有具体提到的path),有没有一种方法,我可以设置它,使我的DLL可以正确加载?

使用清单的DLLredirect

我需要可靠地redirect应用程序查找特定的DLL。 使用app.exe.local方法不起作用,因为如果应用程序具有清单(embedded文件或单独文件),则会忽略本地文件。 所以我正在试图通过在清单中将DLL定义为私有程序集来执行DLLredirect。 我有一个testing应用程序,只需调用LoadDll.exe LoadLibrary("C:\\EmptyDll.dll"); LoadDll.exe具有清单(作为单独的文件,LoadDll.exe.manifest) <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.1" processorArchitecture="x86" name="LoadDll" type="win32" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="EmptyDll" version="1.0.0.1" processorArchitecture="x86" /> </dependentAssembly> </dependency> </assembly> 包含LoadDll.exe(NOT c:\)的Application文件夹包含带有embedded式清单的EmptyDll.dll。 <?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <assemblyIdentity type="win32" name="EmptyDll" version="1.0.0.1" processorArchitecture="x86" /> </assembly> 但是,LoadDll.exe继续并加载C:\ EmptyDll.dll,而不是应用程序文件夹中的EmptyDll.dll。 如果您破坏了任何清单(例如,在EmptyDll.dll清单标识中更改版本号),则LoadDll.exe不会加载,因此清单文件正在被Windows读取和处理,但只是被忽略。 任何人有任何想法? 谢谢! 托比

C#缺lessMSVCR100.dll

我正在开发一个应用程序,执行另一个应用程序,我收到这个错误: 程序无法启动,因为您的计算机缺lessMSVCR100.dll 与我的C#应用​​程序,我可以解决这个问题复制这个.dll到windows / system32文件夹? 或者存在另一种方法来做到这一点?

将C DLL包含到C#中时,对PInvoke函数的调用会使堆栈不平衡

我已经写了一个C DLL和一些C#代码来testing包括这个DLL并执行它的函数。 我不太熟悉这个过程,每当我从C#源代码调用DLL函数时,都会收到一个PInvokeStackImbalanceexception。 代码如下(我已经评论了大部分代码来隔离这个问题): C#包含代码: using System; using System.Runtime.InteropServices; using System.IO; namespace TestConsoleGrids { class Program { [DllImport("LibNonthreaded.dll", EntryPoint = "process")] public unsafe static extern void process( long high, long low); static void Main(string[] args) { System.Console.WriteLine("Starting program for 3×3 grid"); process( (long)0, (long)0 ); System.Console.ReadKey(); } } } C ++ DLL函数代码 extern "C" __declspec(dllexport) […]

哪里可以findWindows(XP,Vista,7,…)上可用的默认DLL文件的列表?

是否有一些在各种新安装的 Windows平台上可用的.dll文件列表(或者至less是最近的Win XP和Win 7)? 我正在寻找一个类似于Windows 2000的这个列表。 (我正在用py2exe编译一个python应用程序,并且应用程序报告哪些dll是编译应用程序的潜在分发所必需的,但是不幸的是它并不告诉我默认安装了哪些dll)

在Linux中创build一个库或DLL并在Windows上使用它们

我是一名Windows开发人员,所以我是Linux环境的新手。 我想知道是否有人有任何build议或一般的文章,可以帮助我在Linux上build立一个项目,并编译成一个库或DLL在Windows环境中使用。 任何帮助是极大的赞赏。

LoadLibrary静态/全局和线程

假设我有一个具有以下静态/全局的DLL: ClassA Object; 除了ClassA的实现之外,它还包含一个“常规”的ClassB,如果ClassA还没有被构造,这将不能正常工作(这就是为什么我使ClassA成为静态/全局的原因)。 在Windows中,我相信DLL加载器会在调用ClassB的构造函数时加载这个DLL,对吗? 此时,ClassA将被build造,然后ClassB的build设将随之而来。 如果第二个线程出现并构造ClassB,ClassA将不会被构造,因为它已经被构造了。 现在,我的问题是 – 如果ClassB是由两个线程同时构build的。 所以线程1将开始构buildClassA。 在执行ClassB的构造函数之前,线程2是否等待ClassA完全构造? 换句话说,LoadLibrary()是否使用CriticalSection来确保DLL的静态/全局variables的线程安全的初始化? 我的直觉是'是',但我似乎无法find任何文件说某种方式或其他。

顺序GUID

我希望有人能回答这个问题。 如何在rpcrt4.dll类的UuidCreateSequential方法使用它的guid? 我知道这一点:微软更改了UuidCreatefunction,因此不再使用机器的MAC地址作为UUID的一部分。 由于CoCreateGuid调用UuidCreate来获取它的GUID,所以它的输出也改变了。 如果您仍然喜欢按顺序生成的GUID(有助于在系统registry中保留相关的一组GUID),则可以使用UuidCreateSequential函数。 问题背后的原因是。 如果我使用此函数在Web群集中生成顺序的GUID,如何确保GUID接近一系列GUID而没有可能重复的GUID?

Visual Studio 2015 C ++应用程序需要客户端客户端上的api-ms-win-crt-runtime-l1-1-0.dll

我已经使用Visual Studio 2015社区版build立了一个应用程序。 当我的一些用户试图运行它,他们收到以下错误: 程序无法启动,因为您的计算机缺lessapi-ms-win-crt-runtime-l1-1-0.dll。 尝试重新安装程序来解决这个问题。 显然这是通过在Windows中安装通用C运行时更新 (KB2999226)来解决的。 我可以在安装脚本中检查修补程序,但是我发现这样做的所有方法要么太慢,要么不可靠 。 我怎样才能防止这种错误发生? 我可以更改我的解决scheme,以便我不需要这种依赖性? 我是否连接了一些我可以删除的东西? 我可以重新分配与我的应用程序的修补程序? 编辑:在项目属性中,“目标平台版本”是8.1,“平台工具集”是“Visual Studio 2015(v140)”,如果有帮助的话。 编辑2:我已经试过将所有的通用C运行时库DLL复制到应用程序目录,因为微软现在允许(但不build议)本地模式安装的UCRT 。 C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64有41个文件,而api-ms-win-crt-runtime-l1-1-0.dll就是其中之一。 但是,现在运行该应用程序导致此错误: 应用程序无法正确启动(0xc0000142)。 单击确定closures该应用程序。 我试过用MSVS 2015debugging应用程序,但没有得到任何好处。 我在Dependency Walker中打开了可执行文件,看起来我错过了这个答案中列出的类似DLL ,它说Dependency Walker是旧的,这是一个红色的鲱鱼。 我尝试通过进程监视器(procmon)运行应用程序,没有什么不寻常的。 应用程序简单地调用WerFault.exe上的“进程创build”,然后“线程退出”。 编辑3:我启用加载程序捕捉可执行文件,并得到这个从CDB运行时,如果有帮助: … 00c0:1200 @ 02106250 – LdrpFindOrMapDependency – RETURN: Status: 0x00000000 00c0:1200 @ 02106250 – LdrpFindOrMapDependency – ENTER: DLL name: api-ms-win-core-sysinfo-l1-2-1.dll. […]