我有两个预先存在的项目(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/