Немного сложно возобновить его в одном заголовке, так что вот моя ситуация.
Я создаю приложение на C #, которое загружает библиотеку C ++.
Я вызываю функции из этой C ++ DLL.
Но я также хотел бы, чтобы моя C ++ DLL вызывала функции из приложения C # (то есть импортирует / запускает его) ...
Вот фрагмент кода, чтобы сделать его немного более полным:
// I'm importing functions from my native code
[DllImport(dllFilePath, CallingConvention = CallingConvention.Cdecl)]
public static extern int returnIntValue(int value);
[DllImport(dllFilePath, CallingConvention = CallingConvention.Cdecl)]
public static extern int returnIntArrValueAt(int[] values, int index);
// Here is the kind of code it should be
// [DllImport(dllFilePath, CallingConvention = CallingConvention.Cdecl)]
// public static extern void callCSharpFunction( FunctionPointer fctPointer );
main
{
// I run the function
int intValue1 =
MyAddIn.returnIntValue(147852369);
int intValue2 =
MyAddIn.returnIntArrValueAt( new int[] { 9, 4, 3, 2, 1, 0 }, 5);
// Here is an example function I use to call my C# func from C++
// MyAddIn.returnIntValue( &myCSharpFunction );
}
// This is the method I'd like to call from my C++ imported library
static public void myCSharpFunction()
{
MessageBox.Show("Called from C++ code !!");
}
Итак, резюме:
- Код C # импортирует мою C ++ DLL
- C # запускает функции из C ++ DLL
- Метод C ++ DLL вызывает метод C #, который отображает MessageBox (т.е.)