首先,我将解释我的情况。我有一个DLL库,对我来说是一个黑匣子。我不知道它是用什么语言写的。我猜是C++,甚至C语言,但我不知道。但是我知道DLL函数,所以我知道如何使用它。
好的。直接去做生意。我正在编写应用程序C# .NET,它将使用上面提到的DLL。我试过所有熟悉的链接方法,但只有一种方法有效:
静态:[DllImport("myDll.dll")] -这是有效的。
动态:通过Kernel32.dll LoadLibrary/FreeLibrary -我得到了代码126-The specified module could not be found的异常。这个问题
情况:
我合并了两个程序集: Functionality.dll和Models.dll
功能调用:RazorEngine.Razor.Parse("template", new Models.Model()) (简化) (Functionality.dll引用Models.dll和RazorEngine。被添加到GAC中。合并后的程序集-不是出于各种原因)
合并后的程序集被上传到第三方工具中。这个第三方工具将这个合并的dll动态地加载到它的appdomain中并执行它。
结果:引发异常:Unable to compile template. The type
我已经创建了一个C#应用程序。在这个应用程序中,我想使用/运行来自另一个项目的C++应用程序接口(该应用程序接口是用宏编码编写的)。我尝试导入该C++项目的动态链接库,并尝试调用属于该应用程序接口的函数。问题是它抛出了"unable to find method“错误。
如何在C#项目中运行C++项目?
我正在尝试将user32.dll放入我的unity免费版本。(非专业)
我只是将user32.dll放到我的Assets/Plugins/文件夹中,它给我的错误是:
DLLNotFoundException:资源/插件/user32.dll
下面是我使用的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
public cla
我正在开发一个使用反射来加载插件的.NET应用程序。我的插件是C#类库。问题是我的一些插件引用了传统的Win32 DLL,C#盲目地试图加载依赖项,就好像它们是.NET DLL一样。
下面是我如何加载一个插件:
string fileName = "plugin.dll";
Assembly.LoadFrom(fileName);
我得到一个包含以下消息的System.BadImageFormatException:
Could not load file or assembly 'plugin.dll' or one of its dependencies.
我确信我在文档中遗漏了一些明显的东西。我从C#调用LoadLibrary,并传入一个不存在的DLL。正如我所期望的那样,我得到了IntPtr.Zero,但是当我调用Marshal.GetLastWin32Error时,我总是得到0。
这是样本。
class Program {
[DllImport("kernel32.dll")]
private static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32.dll")]
private sta