我有两个预先存在的项目(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);
}
答案 0 :(得分:2)
请参阅此处https://msdn.microsoft.com/en-us/library/k7137bfe.aspx
检查dll是否专门用于除您正在运行的体系结构之外的体系结构。检查你编写的C ++ dll是什么
即。不要在32位应用程序中使用64位dll,反之亦然
编辑:我也看到你把它标记为ASP.NET。如果您在IIS中运行此操作并遇到此问题,则可以尝试更改分配给项目的应用池的高级设置中的启用32位应用选项