Questions tagged «dll»

动态链接库(DLL)是一个模块,其中包含可以由另一个模块(应用程序或DLL)使用的功能和数据。这是Microsoft在Microsoft Windows和OS / 2操作系统中对共享库概念的实现。

14
如何检查DLL依赖性?
有时,当我做一个小项目时,我不够谨慎,并意外地添加了一个我不知道的DLL依赖项。当我将此程序发送给朋友或其他人时,“它不起作用”,因为缺少“某些DLL”。这当然是因为程序可以在我的系统上找到DLL,但不能在他们的系统上找到。 有没有扫描DLL依赖的可执行文件或在一个“干净”的DLL,自由的环境中执行的程序进行测试,以防止这些办法糟糕的情况呢?



22
.Net选择错误的引用程序集版本
我只是将现有项目复制到一台全新的机器上,以开始在该机器上进行开发,并且遇到了我所引用的程序集之一的版本问题(发生在telerik DLL中)。 该项目最初引用了该程序集的旧版本(称为v1.0.0.0)。我的新机器已安装了该程序集的最新版本,因此我想我已对其进行了更新(我们称其为新版本v2.0.0.0)。 现在是问题所在:如果我将旧的v1.0.0.0 dll复制到项目文件夹中并将其添加为参考,则该网站将正常启动。如果删除该引用(并从系统中删除旧的DLL)并添加新版本(v2.0.0.0),则页面将显示以下异常: 无法加载文件或程序集“ XXXXXX,版本= 1.0.0.0,文化=中性,PublicKeyToken = 121fae78165ba3d4”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) 显然,代码正在寻找过时的版本,找不到它。但为什么? 我在解决方案文件夹中找到了该版本号,但找不到单个参考。我仔细检查了.csproj文件的文本,发现该版本正确显示了最新版本,而HintPath正确显示了新DLL的路径。此外,因为我没有在系统上安装旧的DLL,所以它也没有显示在我的GAC中(尽管v2.0.0.0确实如预期那样)。 然后,我启用了融合日志查看器,以尝试找出为什么要查找旧版本,但没有运气: Assembly Load Trace: The following information can be helpful to determine why the assembly 'XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4' could not be loaded. === Pre-bind state information === LOG: User = MyComp\me LOG: DisplayName = XXXXXX, Version=1.0.0.0, Culture=neutral, …
141 asp.net  dll 

7
如何在运行时指定[DllImport]路径?
实际上,我有一个C ++(工作中)的DLL,我想导入到我的C#项目中以调用它的功能。 当我指定DLL的完整路径时,它确实可以工作,如下所示: string str = "C:\\Users\\userName\\AppData\\Local\\myLibFolder\\myDLL.dll"; [DllImport(str, CallingConvention = CallingConvention.Cdecl)] public static extern int DLLFunction(int Number1, int Number2); 问题在于它将是一个可安装的项目,因此用户的文件夹将是不同的(例如:pierre,paul,jack,mum,dad等),具体取决于运行该文件的计算机/会话。 所以我希望我的代码更加通用,例如: /* goes right to the temp folder of the user "C:\\Users\\userName\\AppData\\Local\\temp" then go to parent folder "C:\\Users\\userName\\AppData\\Local" and finally go to the DLL's folder "C:\\Users\\userName\\AppData\\Local\\temp\\myLibFolder" */ string str = …
141 c#  c++  dll  constants  dllimport 

12
在哪里找到缺少dll的“ Microsoft.VisualStudio.TestTools.UnitTesting”?
我在C#visual studio项目中遇到以下错误: 类型或名称空间名称“ VisualStudio”在名称空间“ Microsoft”中不存在(您是否缺少程序集引用?) 我也试图找到microsoft.dll文件,但找不到任何参考。我在搜索错误的DLL吗? using Microsoft.VisualStudio.TestTools.UnitTesting; using Kya.MsFx.Services.Swiper; namespace Kya.MsFx.Devices.Swiper.Test { [TestClass] public class SwiperWindowTest { private SwiperWebServiceHost m_SwiperWS = null; /// <summary> /// start web service on a separate thread, so tests /// can be executed withut blocking the application thread /// </summary> [ClassInitialize] public void SetupSwiperTests() …

6
如何在Visual Studio中将路径设置为DLL文件?
我开发了一个依赖于DLL文件的应用程序。当我调试应用程序时,该应用程序会抱怨: “此应用程序未能启动,因为未找到xxx.dll。” 因此,我必须将DLL文件复制到与.vcproj文件相同的目录中。 有没有一种方法可以将项目设置为在(最好是)某些相对路径或(不是最好)某些绝对路径中寻找DLL文件? 与我们在项目设置中设置包含和库路径类似的概念。 我的意思是,当我调试应用程序(点击F5)时,会弹出上述错误。


17
无法加载DLL(找不到模块HRESULT:0x8007007E)
我有一个包含非托管C ++ API代码的dll库,需要在.NET 4.0应用程序中使用。但是我尝试加载dll的每种方法都会出现错误: 无法加载DLL“ MyOwn.dll”:找不到指定的模块。(来自HRESULT的异常:0x8007007E) 我已阅读并尝试了在互联网上找到的许多解决方案。什么都没有 我尝试使用以下方法: [DllImport("MyOwn.dll", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs((UnmanagedType.I4))] public static extern Int32 MyProIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 当我尝试阅读本文并运行本示例(从下载的代码中)时,它可以正常运行(所用的dll在bin / debug文件夹中) 我已经复制了我的dll(以及它依赖的所有文件到我的bin文件夹中)。 我也尝试了这种方法,但是遇到了同样的错误: [DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")] [return: MarshalAs(UnmanagedType.I4)] public static extern int MyproIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 有什么建议?
113 c#  c++  dll  pinvoke 

14
如何设置现有.exe,.dll的版本信息?
在构建过程中,我需要为所有已编译的二进制文件设置版本信息。有些二进制文件已经具有版本信息(在编译时添加),而有些则没有。 我希望能够应用以下信息: 公司名 版权声明 产品名称 产品描述 文件版本 产品版本 所有这些属性均由构建脚本指定,并且必须在编译后应用。这些是使用C ++ Builder 2007编译的标准二进制文件(不是程序集)。 我怎样才能做到这一点?

20
ImportError:DLL加载失败:%1不是有效的Win32应用程序。但是DLL在那里
我的情况非常类似于ImportError上的情况:DLL加载失败:%1不是有效的Win32应用程序,但是答案对我不起作用。 我的Python代码说: import cv2 但是该行引发了此问题标题中显示的错误。 我C:\lib\opencv在这台64位计算机上安装了OpenCV 。我正在使用64位Python。 我的PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7。该文件夹包含cv2.pyd所有内容。 我的PATH变量:Path=%OPENCV_DIR%\bin;...此文件夹包含39个DLL文件,例如opencv_core246d.dll。 OPENCV_DIR具有以下值:OPENCV_DIR=C:\lib\opencv\build\x64\vc11。 ImportError上的解决方案:DLL加载失败:%1不是有效的Win32应用程序,表示要向C:\opencv\build\bin\ReleaseWindows PATH环境变量添加新的opencv二进制路径()。但是,如上所示,C:\lib\opencv\build\x64\vc11\bin我的PATH中已经有OpenCV Binaries文件夹()。而且我的OpenCV安装没有任何Release文件夹(build / java下为空)。 关于出什么问题有什么想法吗?我可以告诉Python详细跟踪加载过程吗?究竟要寻找什么DLL? 谢谢,拉斯 编辑: 我只注意到,根据http://www.dependencywalker.com/中,cv2.pyd在C:\lib\opencv\build\python\2.7为32位,而我运行的机器和Python的是64位。可能是问题所在吗?如果是这样,我在哪里可以找到cv2.pyd的64位版本?
112 python  opencv  dll  path 

14
Java错误打开注册表项
当我尝试在命令提示符下使用Java进行任何操作时,都会出现此错误: Error opening registry key 'Software\JavaSoft\Java Runtime Environment.3' Error: could not find Java.dll Error: could not find Java 2 Runtime Environment 几天前,我确实删除了Java目录和注册表。我重新启动了计算机,而Java仍能正常工作,然后我今天又重新启动了它,现在出现此错误。我尝试卸载并重新安装,但这似乎不起作用。我安装了最新的Java JRE,并在环境变量中设置了路径。任何人都知道如何解决此问题?
110 java  dll  runtime  registry 

12
如何确定.NET应用程序的依赖关系?
如何确定.NET应用程序的依赖关系?Dependency Walker是否可以与托管应用一起使用?我已经下载了最新版本并尝试对应用程序进行性能分析,但是它只是退出而没有太多解释。如果它不适用于.NET,那么是否还有其他工具可以帮助我调试运行时DLL加载问题?


4
使用dllexport从DLL导出功能
我想要一个从C ++ Windows DLL导出函数的简单示例。 我想查看标题,.cpp文件和.def文件(如果绝对需要)。 我希望导出的名称没有修饰。我想使用最标准的调用约定(__stdcall?)。我想要使​​用__declspec(dllexport),而不必使用.def文件。 例如: //header extern "C" { __declspec(dllexport) int __stdcall foo(long bar); } //cpp int __stdcall foo(long bar) { return 0; } 我试图避免链接程序在名称中添加下划线和/或数字(字节数?)。 我可以不支持dllimport并dllexport使用相同的标头。我不需要有关导出C ++类方法的任何信息,而只希望获得c样式的全局函数。 更新 不包括调用约定(并使用extern "C")会为我提供我喜欢的导出名称,但这意味着什么?是什么默认的调用约定我得到了什么pinvoke(.NET),声明(vb6)并GetProcAddress可以预期?(我猜GetProcAddress这取决于调用者创建的函数指针)。 我希望此DLL在没有头文件的情况下使用,因此我真的不需要花哨的钱就#defines可以使调用者使用该头。 我可以接受的答案是,我必须使用*.def文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.