这是我的C ++代码:
ExportAPI.cpp
extern "C"
{
EXPORT_API int test(int a, int b){
return a*b;
}
EXPORT_API bool InitializeApplication( HWND hwnd)
{
CCEGLView::SetParentHwnd(hwnd);
CCApplication::sharedApplication()->run();
return true;
}
}
C#:
public partial class MainWindow : Window
{
[DllImport("libcc.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern bool InitializeApplication(IntPtr hwnd);
[DllImport("libcc.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int test(int a, int b);
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
Closed += MainWindow_Closed;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Window window = Window.GetWindow(this);
var wih = new WindowInteropHelper(window);
Debug.WriteLine(Multiply(3, 4).ToString()); //this runs
InitializeApplication(wih.Handle); //this gives error
}
}
所以基本上我要做的就是将wpf窗口设置为我的c ++应用程序的父级(我在.dll中包含')。但当我运行时,我得到“附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”例外。
抱歉我的英语。 非常感谢任何帮助!答案 0 :(得分:0)
听起来像CCEGLView::SetParentHwnd(hwnd);
或CCApplication::sharedApplication()->run();
中的错误。 Enable Native Code Debugging找到问题的根源。