gpt4 book ai didi

c# - 在 NET Core 中调用从 C++ 项目构建的 .dll 时出现 BadImageFormatException

转载 作者:行者123 更新时间:2023-11-28 01:41:53 24 4
gpt4 key购买 nike

我有两个预先存在的项目(C++、C# NET 4.5.2),其中 C# 项目调用 C++ 项目。在我将 NET 4.5.2 项目移植到 NET Core 之前,这一直很有效。现在,当我尝试访问从 C++ 项目构建的程序集时,出现 BadImageFormatException。是否可以从 NET Core 程序集调用此程序集?

public static string CallCPlusPlusConvert(string inputFileName)
{
if (inputFileName == null) { throw new ArgumentNullException(nameof(inputFileName)); };

return SafeNativeMethods.Convert(inputFileName);
}

internal class SafeNativeMethods
{
[return: MarshalAs(UnmanagedType.BStr)]
[DllImport("CPlusPlusProject", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
internal static extern string Convert([MarshalAs(UnmanagedType.BStr)][In]string filePath);
}

最佳答案

请参阅此处 https://msdn.microsoft.com/en-us/library/k7137bfe.aspx

检查该 dll 是否专门用于您正在运行的架构以外的架构。检查你编译的 C++ dll 是什么

即不要在 32 位应用程序中使用 64 位 dll,反之亦然

编辑:我还看到您将其标记为 ASP.NET。如果您在 IIS 中运行它并遇到此问题,那么您可以尝试更改分配给项目的应用程序池的高级设置中的启用 32 位应用程序选项

关于c# - 在 NET Core 中调用从 C++ 项目构建的 .dll 时出现 BadImageFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com