使用.Net核心错误加载本机库

时间:2018-06-09 22:01:55

标签: c# c++ .net-core native

  

这可能会被标记为BadImageFormatException When Calling .dll Built from C++ Project In NET Core的副本,但原始对我没有任何帮助,没有解决方案

在过去的2个小时里,我试图让c#(。net core)和c ++本机dll一起工作。 好吧,正如你可能已经知道的那样,它没有用。它始终提供BadImageFormat例外。

我确保将c#appilcation和c ++ dll编译为64位。我为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();
}

那就是c ++ one(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)

我希望我能为您提供所需的所有信息。

0 个答案:

没有答案