Загрузка родной библиотеки с ошибками ядра .Net

Это, вероятно, будет помечено как дубликат BadImageFormatException при вызове .dll, созданной из проекта C ++ в NET Core , но оригинал мне совсем не помог и не имел решения

В течение последних 2 часов я пытался заставить c # (ядро .net) и родной dll c ++ работать вместе.
Ну, как вы, наверное, уже знаете, это не сработало. Это всегда дает BadImageFormat Исключение.

Я удостоверился, что оба, c # appilcation и c ++ dll, скомпилированы как 64-битные. И я попробовал 2 различных компилятора для библиотеки C ++. MinGW64 и компилятор, который использует Visual Studio (я понятия не имею, какой компилятор использует Visual Studio)

Я попробовал то же самое на Linux, используя g ++, что по некоторым причинам сработало.

Если кто-нибудь может помочь мне запустить эту вещь, я был бы очень рад ..

Это исходный код, который я использовал для C #

[DllImport(@"libuntitled_test.dll", EntryPoint = "hello")]
static extern void Hello();

[DllImport(@"libuntitled_test.dll", EntryPoint = "hello2")]
static extern void Hello2();

static void Main(string[] args)
{
Hello2();
Console.ReadLine();
Hello();
Console.ReadLine();
}

И это с ++ один (MinGW)

// libary.cpp
#include "library.h"
#include <iostream>

EXTERN void hello() {
std::cout << "Hello, World!" << std::endl;
}

EXTERN int hello2() {
return 7098;
}

также заголовочный файл

//libary.h
#include <iostream>

#define EXTERN extern "C" __declspec(dllexport)

EXTERN void hello();

EXTERN int hello2();

и Cmake

cmake_minimum_required(VERSION 3.10)
project(untitled_test)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS -m64)

add_library(untitled_test SHARED library.cpp library.h)

Я надеюсь, что дал вам всю необходимую информацию.

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector