Questions tagged «dll»

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



6
我如何解决log4net不断更改publickeytoken
我们有一个asp.net 4.0项目,它使用几个依赖于log4net版本1.2.10.0的框架。今天,我试图包括一个依赖于log4net版本1.2.11.0的新框架,从那时起,我就一直陷入困境: log4net 1.2.10.0具有publickeytoken = 1b44e1d426115821 log4net 1.2.11.0具有publickeytoken = 669e0ddf0bb1aa2a 由于这些不同,因此我无法通过web.config中的runtime元素使用程序集重定向(使所有框架使用相同版本的log4net)或代码库(仅使新框架使用1.2.11.0版本)。 我在这里有什么选择? (为什么log4net会在版本之间不断变化,因为据我所知,丢失了密钥是在版本1.2.9.0和1.2.10.0之间进行切换的原因,它们又失去了密钥吗?我将自愿使用我的保管箱在需要时保持安全...) 编辑:好的,所以log4net的人显然有一个想法,用两个键来发布是个好主意,但这意味着您使用的每个框架都需要就他们偏爱的两种风格中的哪个达成一致,否则这些框架将无法正常工作。在同一个appdomain中并排。我是唯一发现这个可怕想法的人吗?如果每个人都这样做,那么一切都会崩溃,对吗? Edit2:正如我所说,我没有在业务代码中使用log4net,而是使用了一些依赖于1.2.10.0的框架,当我尝试使用依赖于1.2.11.0的新框架时出现了问题(新密钥),因此Stefans的答案不适用,因为新框架将需要新密钥,而不是旧密钥

9
如何使用CMake将DLL文件复制到与可执行文件相同的文件夹中?
我们使用CMake在SVN中生成源代码的Visual Studio文件。现在,我的工具要求某些DLL文件与可执行文件位于同一文件夹中。DLL文件位于源旁边的文件夹中。 如何更改我的名称CMakeLists.txt,以使生成的Visual Studio项目在release / debug文件夹中已经具有特定的DLL文件,或者在编译时将其复制?
98 dll  cmake 


5
如何获取当前正在执行的DLL的位置?
我有一个配置文件,在我编写的dll执行过程中需要加载该文件。 我遇到的问题是,当应用程序运行时,我放置dll和配置文件的位置不是“当前位置”。 例如,我将dll和xml文件放在这里: D:\ Program Files \ Microsoft Team Foundation Server 2010 \ Application Tier \ Web Services \ bin \ Plugins 但是,如果我尝试像这样引用xml文件(在我的dll中): XDocument doc = XDocument.Load(@".\AggregatorItems.xml") 然后。\ AggregatorItems.xml转换为: C:\ windows \ system32 \ inetsrv \ AggregatorItems.xml 因此,我需要找到一种方法(希望)来知道当前正在执行的dll所在的位置。基本上我正在寻找: XDocument doc = XDocument.Load(CoolDLLClass.CurrentDirectory+@"\AggregatorItems.xml")
93 c#  .net  dll  file-io 




5
在C#中在运行时加载DLL
我试图弄清楚如何在C#应用程序内部在运行时导入和使用.dll。使用Assembly.LoadFile(),我设法使程序加载dll(这部分肯定可以正常工作,因为我能够使用ToString()获得类的名称),但是我无法使用“输出”控制台应用程序内部的方法。我正在编译.dll,然后将其移动到控制台项目中。在CreateInstance和能够使用这些方法之间是否还有其他步骤? 这是我的DLL中的类: namespace DLL { using System; public class Class1 { public void Output(string s) { Console.WriteLine(s); } } } 这是我要加载DLL的应用程序 namespace ConsoleApplication1 { using System; using System.Reflection; class Program { static void Main(string[] args) { var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll"); foreach(Type type in DLL.GetExportedTypes()) { var c = …
91 c#  reflection  dll 

6
什么是dll?
这可能是一个非常棘手的问题,但是在当今的Web应用程序开发世界中,许多程序员不需要过多地处理dll,因此不必理会它们的用途。 那么什么是dll? 它是干什么用的? 它是如何工作的? 您如何创建一个? 在什么情况下创建一个合适的? 有人告诉我dll用于存储函数库,但是除此之外,我所知不多。希望这里有人能启发我,让我终于可以不再怀疑Windows目录中的所有.dll文件在做什么。
90 dll 

16
名称“ ViewBag”在当前上下文中不存在
我试图在我的应用程序中使用ViewBag,我拥有所有最近的dll,最新版本的MVC 3,但仍然出现错误: “名称'ViewBag'在当前上下文中不存在” 我什至卸载并重新安装了MVC 3,但没有任何变化。 另外,我不认为该dll在GAC中显示。 我可能是什么问题?或者如何将dll添加到GAC?

3
从DLL动态加载功能
我稍微看一下.dll文件,了解它们的用法,并试图了解如何使用它们。 我创建了一个.dll文件,其中包含一个函数,该函数返回一个名为funci()的整数 使用此代码,我(认为)我已将.dll文件导入到项目中(没有任何抱怨): #include <windows.h> #include <iostream> int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\Documents and Settings\\User\\Desktop \\fgfdg\\dgdg\\test.dll"); if (hGetProcIDDLL == NULL) { std::cout << "cannot locate the .dll file" << std::endl; } else { std::cout << "it has been called" << std::endl; return -1; } int a = funci(); return …
88 c++  winapi  dll 

5
生成清单文件以用于免注册的COM
我有一些使用清单文件的应用程序(某些本机应用程序,.NET),以便可以完全隔离地部署它们,而无需任何全局COM注册。例如,对dbgrid32.ocx com服务器的依赖关系在myapp.exe.manifest文件中的声明如下,该文件与myapp.exe位于同一文件夹中: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity type="win32" name="myapp.exe" version="1.2.3.4" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" /> </dependentAssembly> </dependency> </assembly> dbgrid32.ocx和它自己的dbgrid32.ocx.manifest文件一起部署到同一文件夹: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" /> <file name="dbgrid32.ocx"> <typelib tlbid="{00028C01-0000-0000-0000-000000000046}" version="1.0" helpdir=""/> <comClass progid="MSDBGrid.DBGrid" clsid="{00028C00-0000-0000-0000-000000000046}" description="DBGrid Control" /> </file> …

3
DLL中包含什么?它如何工作?
我总是在我的C#代码中引用DLL,但我想澄清它们仍然是个谜。这是有关DLL问题的一种脑力激荡。 我知道DLL是一个动态链接的库,这意味着另一个程序可以在运行时访问该库以获取“功能”。但是,请考虑以下带有Web.dll和的ASP.NET项目Business.dll(Web.dll是前端功能,它引用Business.dll类型和方法)。 在什么时候Web.dll动态链接到Business.dll?您注意到在Windows HDD中使用Word(等)时看似很小的任务经常会发生混乱,而我认为Word正在关闭并动态链接其他DLL的功能吗? 1a。另外,什么加载和链接DLL-OS或某些运行时框架(如.NET框架)? 1b。“链接”的过程是什么?是否进行兼容性检查?加载到同一内存中?链接实际上是什么意思? 什么实际执行DLL中的代码?它是否由处理器执行,或者在处理器理解DLL中的代码之前还有其他翻译或编译阶段? 2a。对于使用C#.NET内置的DLL,正在运行什么:.NET框架或直接操作系统? Linux中的DLL是否可以在Windows系统上运行(如果存在),或者它们特定于操作系统? DLL是否特定于特定框架?使用C#.NET构建的DLL是否可以被使用Borland C ++构建的DLL使用? 4a。如果对4的回答为“否”,那么DLL的意义是什么?为什么各种框架不使用自己的链接文件格式?例如:.NET内置的.exe知道.abc文件类型可以链接到其代码中。 让我们再回到Web.dll/Business.dll例子-让客户的类类型,我需要参考Business.dll的Web.dll。这必须意味着Business.dll包含某种有关客户类别实际的规范。如果我编译了我的Business.dll文件Delphi,例如:C#会理解它并能够创建客户类,或者是否存在某种标头信息或显示“嘿,抱歉,您只能从另一个Delphi DLL使用我” ? 5a。方法同样适用;如何CreateInvoice()在DLL中编写方法,在C ++中进行编译,然后从C#访问并运行它?是什么阻止或允许我这样做? 关于DLL劫持,替换的(坏的)DLL当然必须包含与被劫持的DLL完全相同的方法签名和类型。我想,如果您能找到原始DLL中可用的方法,这将不难。 6a。我的C#程序在决定是否可以访问另一个DLL?如果我被劫持的DLL包含与原始DLL完全相同的方法和类型,但它是用另一种语言编译的,那么它将起作用吗? 什么是DLL导入和DLL注册?
86 c#  .net  dll 

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.