Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到错误的图像格式VS DLL_C#_Asp.net_C_Dll - Fatal编程技术网

C# 找不到错误的图像格式VS DLL

C# 找不到错误的图像格式VS DLL,c#,asp.net,c,dll,C#,Asp.net,C,Dll,通过C#包装器类加载C DLL时遇到问题。我做了一些研究,但我还没有从下面的任何一项中得到满意的解决方案 更改我的解决方案的目标平台 正在更改项目的目标平台 在配置的管理器中更改平台 我尝试使用的C DLL是64位的,所以我最初尝试将所有内容设置为64位,并通过我的包装器类访问DLL。当我这么做的时候,我得到了一个dllnotfound异常。我很困惑,因为我的DLL肯定在构建路径上,我尝试将所有内容设置为32位,在这一点上,看起来我的DLL被找到了,但我在同一行上遇到了错误的图像格式异常 这

通过C#包装器类加载C DLL时遇到问题。我做了一些研究,但我还没有从下面的任何一项中得到满意的解决方案

  • 更改我的解决方案的目标平台
  • 正在更改项目的目标平台
  • 在配置的管理器中更改平台
我尝试使用的C DLL是64位的,所以我最初尝试将所有内容设置为64位,并通过我的包装器类访问DLL。当我这么做的时候,我得到了一个dllnotfound异常。我很困惑,因为我的DLL肯定在构建路径上,我尝试将所有内容设置为32位,在这一点上,看起来我的DLL被找到了,但我在同一行上遇到了错误的图像格式异常

这意味着什么?我应该从这里走到哪里

我尝试使用的库是DualAlign I2KRetina库;试着让它适应C。我正在运行的实验代码非常简单(见下文)。我没有介绍包装器类(我从DualAlign获得),因为它非常大,我没有理由怀疑它是否有效(但仍然有效)


给我带来麻烦的一行是许可证文件路径分配。向所有做出贡献的人表示衷心的感谢

是否检查了两个DLL之间的框架版本差异。这有时会导致问题。

您已通过64位编译修复了BadImageFormat异常;现在看起来要么你找不到DLL,要么它缺少一个依赖项

首先要检查的是DLL是否存在于路径或输出目录中(如果您的构建是这样的话);请记住,每个版本(x86、AnyCPU和x64)的库可能不同,因此可能需要手动或通过VS中的引用属性将库复制到该目录


如果您已经确定DLL确实存在,那么它可能是一个依赖性问题。下载64位版本的,它将向您显示缺少的内容。

您的configuration Manager平台是否设置为任何CPU?我不确定您是否希望IntPtr分配行上的()命令,除非da_i2k_expected_license_path方法返回一个方法指针。另外,据我所知,DLL和应用程序体系结构必须匹配。如果DLL是64位的,则必须将应用程序构建为64位才能使用它(这就是为什么在32位代码中会出现BadImageFormat异常)。关注“找不到”错误。“找不到”消息通常意味着“无法加载”,因此,请检查您的依赖项和所有内容,以确保您的dll加载正确。Y:确实是=)。雷耶斯:你们是对的。未加载DLL,因为找不到它。我创建了一个新项目,将dll移动到另一个文件夹(它最初位于项目的bin中),相应地更改了我的环境路径,瞧!代码开始工作时没有崩溃。不确定为什么在项目的bin目录中找不到它。感谢大家的贡献!这次不是这样,但是谢谢你的指点!我会一直关注这个问题。虽然在我读到这篇文章时问题已经解决了,但我承认这篇文章很可能会引导我找到答案,所以它得到了绿色的复选标记=)。谢谢你,艾伦。很高兴你能跑起来!
class TestImage2
{
    public static void Main(String[] args)
    {
        TestMontageMethod();
        Console.ReadLine();
    }

    public unsafe static void TestMontageMethod()
    {
        IntPtr license_file_path = DA_CSharpCls.da_i2k_expected_license_path(); 
    }
}