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 platform incompatibility.
Check that that your compiler profile are set to the same platform(x86, x64 or AnyCPU).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With