将C结构包装在WPF应用程序中
Wrap a C struct for access in WPF application
对于我的项目,我想包装C结构以在C#代码中使用它。我的C 算法返回一个结构对象,我想查看包含C#/WPF代码的信息。
当我尝试"我的方式"时,我在编译时会收到一条错误消息:"'wrapper.wrapperalgo.cereatemediummap()'由于其保护级别而无法访问"
我的C#代码:
public partial class MainWindow : Window
{
unsafe public MainWindow()
{
WrapperAlgo algo = new WrapperAlgo();
square** map = (square**)algo.createMediumMap();
}
}
我的包装器
#ifndef __WRAPPER__
#define __WRAPPER__
#include "../CivilizationAlgo/mapalgo.h"
#pragma comment(lib, "../Debug/CivilizationAlgo.lib")
using namespace System;
namespace Wrapper {
public ref class WrapperAlgo {
private:
Algo* algo;
public:
WrapperAlgo(){ algo = Algo_new(); }
~WrapperAlgo(){ Algo_delete(algo); }
square** createSmallMap() { return algo->createSmallMap(); }
square** createMediumMap() { return algo->createMediumMap(); }
int computeFoo() { return algo->computeFoo(); }
};
}
#endif
我想在C#
中使用的结构的C algo.h#ifdef WANTDLLEXP
#define DLL _declspec(dllexport)
#define EXTERNC extern "C"
#else
#define DLL
#define EXTERNC
#endif
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct square {
// 0: Mountain, 1: Plain, 2: Desert
int type;
// 0: No additionnal ressource, 1: Additionnal Iron, 2: Additionnal Food
int bonus;
// 0: free, 1: checked, 2: frozen
int state;
};
class DLL Algo {
public:
Algo() {}
~Algo() {}
square** createSmallMap();
square** createMediumMap();
int computeFoo();
};
你知道我错了吗?
如果我很好地了解您,您正在寻找一种在C#代码中使用非管理库(例如CPP/C库)的方法。如果是,那么您应该阅读有关套的信息,for ex。在这里,这里或这里。
可以在MSDN或MSDN杂志上找到有关在C#应用中加入非管理代码的基础知识。
希望它有帮助。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 相机枚举的选项和UWP应用程序的HAL(WPF/C CLI DLL)
- 在C#WPF或Windows表单应用程序中使用DirectX C DLL
- 在DLL中关闭Win32对话框时(来自WPF应用程序)时例外
- 将C结构包装在WPF应用程序中
- 在C#WPF应用程序中使用C++11库的选项是什么
- 当在C#中的WPF应用程序中单击一个按钮时,如何调用C 代码
- 正在WPF应用程序中加载非托管DLL
- WinAPI / WPF:仅为应用程序设置系统光标
- 在 C# WPF 应用程序中使用外部C++ DLL
- 从 CLI C++应用程序加载库中的 C# WPF 窗体
- WPF应用程序无法加载C++dll
- WPF应用程序早期TypeInitializationException捕获
- 向WPF应用程序消息泵注入消息
- WPF应用程序不响应WM_CLOSE
- 在非托管c++应用程序中提高WPF对话框的性能
- 我可以从WPF UserControl创建ActiveX控件并在非CLI C++应用程序中使用吗
- 在Windows桌面应用程序的OpenGL窗口上显示WPF控件