我想知道DLL和EXE文件之间的确切区别。
我想要一个从C ++窗口DLL中导出函数的简单示例。 我希望看到标题,cpp文件和def文件(如果绝对需要的话)。 我想要导出的名称是undecorated 。 我想使用最标准的调用约定(__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样式的全局函数。 UPDATE 不包括调用约定(和使用extern“C”)给我的出口名称,我喜欢,但这是什么意思? 无论默认调用约定我得到什么pinvoke(.NET),声明(VB6)和GetProcAddress会期望? (我猜GetProcAddress将取决于调用者创build的函数指针)。 我希望这个DLL可以在没有头文件的情况下使用,所以我并不需要很多花哨的#define来使头文件可以被调用者使用。 我很好,答案是我必须使用DEF文件。
这可能是一个很难理解的问题,但是在当今Web应用程序开发的世界里,很多程序员不需要处理dll的东西,所以不用费心去了解它们的用途。 那么什么是DLL? 它是干什么用的? 它是如何工作的? 你如何创build一个? 在什么情况下创build一个合适的? 我被告知,dll被用来存储函数库,但除此之外,我不太了解。 希望在这里有人能够启发我,所以我终于可以停止想知道我的Windows目录中的所有这些.dll文件在做什么。
我有我需要在.NET 4.0应用程序中使用的非托pipeC ++ API代码的DLL库。 但是,我尝试加载我的DLL的每一个方法我得到一个错误: 无法加载DLL'MyOwn.dll':无法find指定的模块。 (从HRESULTexception:0x8007007E) 我已阅读并尝试在互联网上find的severa解决scheme。 什么都没有 我曾尝试使用以下方法: [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); 有什么build议么?
我在我的C# visual studio project遇到以下错误: The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) 我也试图findmicrosoft.dll文件,但无法获得任何参考。 我search错误的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 […]
我试图在我的应用程序中使用ViewBag,我有所有最近的DLL,最新版本的MVC 3,但我仍然得到错误: “名称”ViewBag“在当前上下文中不存在” 我甚至卸载,然后重新安装MVC 3,但没有改变。 另外,我不相信这个dll会出现在GAC中。 什么可能是我的问题? 或者如何将dll添加到GAC?
我试图使用下面的代码: cd c:\windows\system32 regsvr32.exe dllname.ax 但这不适合我。 如何在Windows 7上使用64位处理器注册DLL文件?
我正在尝试使用HttpContent : HttpContent myContent = HttpContent.Create(SOME_JSON); …但我没有find它定义的DLL的运气。 首先,我尝试添加对Microsoft.Http和System.Net引用,但都不在列表中。 我也尝试添加对System.Net.Http的引用,但是HttpContent类不可用。 那么,谁能告诉我在哪里可以findHttpContent类?
我们有一个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中的运行时元素使用程序集redirect(使所有的框架使用相同版本的log4net)或代码库(只有新的框架使用版本1.2.11.0)。 我在这里有什么select? (以及为什么log4net不断改变版本之间的publickeytokens,据我所知,一个丢失的密钥是1.2.9.0和1.2.10.0之间切换的原因,他们是否失去了关键呢?我会自愿我的保pipe箱保持安全,如果他们需要它…) 编辑:好吧,所以log4net家伙显然有这样的想法,用两个键释放是一个好主意,但这意味着你使用的每个框架需要同意他们喜欢的两种风格中的哪一种,或者这些框架不能工作在同一个appdomain旁边。 我是唯一一个发现这个可怕的想法吗? 如果每个人都这样做,那么一切都会崩溃,对吧? Edit2:正如我所说的,我没有在我的业务代码中使用log4net,但我使用了几个依赖于1.2.10.0的框架,并且当我试图使用依赖于1.2.11.0的新框架(新密钥),所以Stefans的回答并不适用,因为新的框架会期望新的关键,而不是旧的关键
我有一个视觉工作室解决scheme。 我在解决scheme中有很多项目。 有一个主要项目是启动和使用其他项目。 有一个项目说“ProjectX”。 其参考被添加到主项目。 ProjectX引用另一个.NET dll(比如说abc.dll),它不是解决scheme的一部分。 现在这个abc.dll应该被复制到主项目的bin / debug文件夹中,但是它不会被复制到那里。 为什么它不被复制,任何已知的原因?