BadImageFormatException при вызове .dll, созданный из проекта C ++ в NET Core

У меня есть два предыдущих проекта (C ++, C # NET 4.5.2), где проекты C # обращаются к проекту C ++. Это работало отлично, пока я не портировал проект NET 4.5.2 на NET Core. Теперь я получаю исключение BadImageFormatException при попытке получить доступ к сборке, созданной из проекта C ++. Можно ли назвать эту сборку из сборки 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

Решение

Посмотреть здесь https://msdn.microsoft.com/en-us/library/k7137bfe.aspx

Убедитесь, что dll не предназначена специально для архитектуры, отличной от той, на которой вы работаете. Проверьте, что вы выполнили C ++ dll как

Т.е. не использовать 64-битную DLL в 32-битном приложении и наоборот

РЕДАКТИРОВАТЬ: Я также вижу, что вы пометили это как ASP.NET. Если вы запускаете это в IIS и получаете эту проблему, то вы можете попробовать изменить Включить 32-битные приложения в дополнительных настройках для пула приложений, назначенных проекту

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]