简体   繁体   中英

How to Interop between C# and C++

I'm attempting a very basic interoperation between the 2 languages. I basically have some performance intensive code I wanna handle in C++ and then get the result back to my application.

All is going to be compiled in Visual Studio.

i have chosen int to be the input and output type since marshalling can be a bit wonky and not really what i'm dealing with.

C++ i have:

#include "stdafx.h" // default from vs2013, no idea what it is

_declspec(dllexport) int Diu(int p) {
    return p * 2;
}

C# i have:

using System;

namespace Interop {
    public class Program{
        [System.Runtime.InteropServices.DllImport("Hardworker.dll")]
        public static extern int Diu(int p);

        private static void Main(string[] args) {
            Console.WriteLine(Diu(2));
        }
    }
}

So it's a pretty basic example. But I'm getting the exception:

An unhandled exception of type 'System.BadImageFormatException' occurred in Interop.exe

Additional information: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

The C++ project is created as a Console Application > Dll in the create dialog. I checked the C++ dll in the disassembler and i can see a Diu as an exported symbol.

Uh. What did I miss about the setting up interop?

When you get this error: HRESULT: 0x8007000B is caused by paltform incompatibility.
Check that that your compiler profile are set to the same platform( x86 , x64 or AnyCPU ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM