Tag: dll

x86 DLL工作但不是x64 DLL

我正在尝试将System.Data.SQLite包含在我的项目中,该项目使用C#编码并使用.NET Framework v4。 我有点困惑……我正在运行Windows 8.1 x64,项目的平台目标设置为Any CPU 。 如果我包含x64版本的System.Data.SQLite.dll那么我会收到一个错误The type or namespace name ‘SQLite’ does not exist in the namespace ‘System.Data’ (are you missing an assembly reference?) 。 但是,如果我包含x86版本的System.Data.SQLite.dll那么它编译得很好。 不应该是相反的方式(不应该x86版本不编译)? 由于x86版本可以工作,那么我可以在编译项目中只包含x86版本吗? 如果我需要同时包含x86和x64版本的System.Data.SQLite.dll (以及SQLite.Interop.dll ),那么我该怎么做呢? 我还应该注意System.Data.SQLite的版本是v1.0.94.0(适用于.NET Framework 4)。

确定DLL在C#程序中使用的文件列表

我将尝试描述我的问题…我在我的项目(C#)中使用加载,例如“General.dll” //load “General.dll” dllHandle = LoadLibraryEx(generalPath, IntPtr.Zero, LOAD_WITH_ALTERED_SEARCH_PATH); [DllImport(“kernel32.dll”)] private static extern IntPtr LoadLibraryEx(string dllToLoad, IntPtr reserved, uint flags); [DllImport(“General.dll”)] … 如果我使用“General.dll”中需要“Gif.dll”的方法,我需要将“Gif.dll”复制到包含“General.dll”的文件夹(如果我不使用这种方法,我就不能复制“ Gif.dll“)。 如果我使用“General.dll”中使用“Dutch”语言的方法,我需要将“Dutch.amd”复制到包含“General.dll”的文件夹。 例如,我编写了一些使用“General.dll”中不同方法的代码。 如何确定我可以删除“General.dll”文件夹中的哪些文件? 我可以使用Visual Studio执行此操作吗? 例如,在VS中编译我的代码,找出在运行时使用的文件并仅复制这些文件。 谢谢!

ERROR_MORE_DATA – PVOID和C# – 非托管类型

如何从以下DLL获取值? offreg.dll。 在我的下面的代码中,我已经成功打开了配置单元,密钥,现在我正在尝试获取密钥的值,并且我一直遇到ERROR_MORE_DATA(234)错误。 这是C ++ .dll: DWORD ORAPI ORGetValue ( __in ORHKEY Handle, __in_opt PCWSTR lpSubKey, __in_opt PCWSTR lpValue, __out_opt PDWORD pdwType, __out_bcount_opt(*pcbData) PVOID pvData, __inout_opt PDWORD pcbData ); 这是我的C#代码: [DllImport(“offreg.dll”, CharSet = CharSet.Auto, EntryPoint = “ORGetValue”, SetLastError = true, CallingConvention = CallingConvention.StdCall)] public static extern uint ORGetValue(IntPtr Handle, string lpSubKey, string lpValue, out uint […]

你怎么知道你的c#应用程序使用的是哪个dll?

我有一个使用.dll的应用程序,它在位置x中充满了gui应用程序代码。 它用来有1个按钮,但现在有2个。 当我启动我的应用程序时,我期望看到的是一个带有2个按钮的gui,但是我看到一个带有1个按钮的gui。 我已经重建了我的gui .dll,但它神奇地使用了某个地方的旧版本。 如果我尝试调试我的代码,它说我使用的代码版本与.dll中的代码版本不同 我的问题是,“我怎样才能找到它在哪里寻找.dll以及为什么它会使用旧版本,因为我只有一个地方我将.dll编译成?” 还想说明我已经引用它,它是正确的版本,其中有2个按钮..但是当我运行它是使用另一个版本???

未处理的exception:System.AccessViolationException:尝试读取或写入

下面是我的c ++ DLL // DLL.cpp : Defines the exported functions for the DLL application. #include “stdafx.h” //#include #include using namespace std; typedef void (*FunctionPtr)(int); void (*FunctionPtr1)(int); extern “C” __declspec(dllexport)void Caller(); extern “C” __declspec(dllexport)void RegisterFunction(FunctionPtr func_ptr); extern void Caller() { int i = 10; FunctionPtr1(i); } extern void RegisterFunction(FunctionPtr func_ptr1) { FunctionPtr1 = func_ptr1; } 这个DLL将从c#引用函数名称并将参数传递给c#函数。这是我的c#代码 […]

使用CreateInstance()发现“无法找到类型”错误

我正在尝试在C#项目中的连接实用程序中使用.CreateInstance() ,同时序列化XML。 .Unwrap()用于解包可序列化的返回类型,并获取我正在尝试创建的类型的实例。 String fileToLoad = @”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”; String file = Path.GetFileName(fileToLoad); AbstractResponseMessageData response = (AbstractResponseMessageData)Activator.CreateInstance(file, responseName).Unwrap(); 我在@”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”程序集@”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”加载正常,但由于responseName ARC_LOGONRS中的ARC_LOGONRS类型,我收到以下错误: 方法ConnectUtil.Execute中的错误:无法从程序集RPM_Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null加载类型ARC_LOGONRS 。 现在,这就是我遇到错误的原因: 我确实引用了错误中指定的程序集。 2.我的GAC中没有任何内容覆盖my /Debug文件夹中的.dll。 3.我确保我拥有.dll的正确版本。 4. .dll没有其他依赖项。 5.我的项目和.dll都有相同的目标平台。 6.我知道我正在引用程序集,好像我将ARCLOGON_RS放在我的代码中并将鼠标hover在它上面我看到了 类RPM.Model.Data.ARCLOGON_RS 我可以专注于它来看它的属性。 7.我已经清理并重建了两种解决方案。 8.类型确实有一个公共默认构造函数,类是public。 9. .dll位于参考节点中。 10.我确实将正确的程序集名称作为参数传递。 我的问题是,如果有人知道为什么我的项目可能会抛出这个错误,以及我如何修复它,因为我完全没有诊断。 非常感谢任何帮助。

这是开始在mutliple mvc应用程序之间共享代码的合适方式吗?

我们正在为同一家公司开发多个应用程序。 应用程序是不同的(因此不适合多租户应用程序),但会有很多共享模型,几个共享控制器和理想的一些共享视图。 这是我第一次不得不这样做,并想知道我是否正确接近它。 这是我的计划: 为共享内容创建数据库,为应用程序特定内容创建另一个(每个应用程序) 每个应用程序在Web配置中将有2个连接 从共享模型和控制器创建DLL。 将它放在/ bin目录中并在项目中引用它。 我希望这可以近似于nuget包的工作方式,并参考 对于每个应用程序,创建SharedApplicationDBContext和LocalApplicationDBContext ,每个都访问相应的DB。 问题 以上步骤是正确的吗? 有没有办法在DLL中包含cshtml视图? 可以在DLL中包含Users控制器/模型吗? 在mutliple应用程序上共享这样的代码时,我应该注意哪些问题? 我知道SO喜欢特定的问题,这有点模糊,但我有点超出我的深度,并寻找一些关于正确方法的一般指导。

从C ++托管的dll抛出的C#exception – EEFileLoadException * __ptr64

我从正常的C#控制台程序中得到此错误,该程序正在使用作为C ++ CLI项目的构建输出生成的DLL。 我有一个简单的DumbThing public ref class与静态方法。 我想简单地调用该函数或至少实例化一个微小的DumbThing对象,并看到C#可以调用它从C ++ CLI生成的DLL中获取的代码,但是它没有工作,因为它抛出的错误让我更加困惑: First-chance exception at 0x000007fefd2acacd (KernelBase.dll) in DumbTest.exe: Microsoft C++ exception: EEFileLoadException * __ptr64 at memory location 0x007fc228.. 更新:在原始exception之下,还有另一个第一次机会exception: First-chance exception at 0x77cace3b (ntdll.dll) in DumbTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff. 一位同事向我指出,这可能是一个编译时问题(一些选项),但我没有任何可能导致它的线索。 有谁可以提供一些起点提示?

在64位Windows 7上的.net桌面应用程序中使用vb6 dll

我在桌面.net 3.5应用程序中使用旧的vb dll时出现问题。 我最近得到了一台运行64位Windows 7的新计算机,而旧的计算机是32位。当我从dll创建类的实例时,我遇到了这个exception。 dll的名称以Interop.DllName开头。 这是例外: 由于以下错误,检索具有CLSID {C198B362-6AE8-4DC3-A3E9-5DA5E60B326F}的组件的COM类工厂失败:80040154。 使用regsvr32在注册表上注册dll没有问题,但是当我试图使用RegDllView找到dll时,我找不到它。 Thanx的帮助!

从C#调用C ++ DLL函数时出现问题

这是关于C#中的一个河豚问题的第三个主题。虽然我不能在我的应用程序中实现blowfish,但我决定将它用作外部C ++ DLL。 请注意我已经尝试过Blowfish.NET和其他任何一个,问题是我正在将代码从C ++转换为C#,而C#代码必须与C ++代码完全相同。 至今: —> C ++ DLL源码<— 请注意,导出的函数位于代码的末尾 C#代码(定义) [DllImport(“TestDLL.dll”, EntryPoint = “Initkey” ,ExactSpelling = true , CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void Initkey(byte[] key); [DllImport(“TestDLL.dll”, EntryPoint = “encode”, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void encode(UInt32 *stream); C#代码(函数调用) – 初始化河豚钥匙 UInt32[] keyarray = new […]