C++;代码加C#GUI 我正在编写程序,使用TestSerACT、OpenCV、SDL、Word自动化,也许将来还有其他库,用C++编写。我能做的最好的GUI(MFC、C++/CLI、ATL、WTL、C#)是什么?开发速度最快?是在非MnMault+或管理C++上编写的TestSerAt、OpenCV、SDL库吗?在C++和CLR或C语言中有没有用C++编写的非托管库?我还听说了一些类似“服务”的东西。它们是否允许语言和GUI开发的结合,以及哪个更好(或开发更快)->dll还是服务?
您的问题非常广泛,因此我将重点关注以下几点:C++;代码加C#GUI 我正在编写程序,使用TestSerACT、OpenCV、SDL、Word自动化,也许将来还有其他库,用C++编写。我能做的最好的GUI(MFC、C++/CLI、ATL、WTL、C#)是什么?开发速度最快?是在非MnMault+或管理C++上编写的TestSerAt、OpenCV、SDL库吗?在C++和CLR或C语言中有没有用C++编写的非托管库?我还听说了一些类似“服务”的东西。它们是否允许语言和GUI开发的结合,以及哪个更好(或开发更快)->dll还是服务?,opencv,dll,service,c++-cli,tesseract,Opencv,Dll,Service,C++ Cli,Tesseract,您的问题非常广泛,因此我将重点关注以下几点: >C和C++库可用于C++/CLI 用C#编写的程序集可以轻松访问用C++/CLI编写的程序集中的托管代码(ref classes或value classes) 在.NET中基本上有两种GUI框架可用:WPF和Windows窗体。甚至可以从C++/CLI直接使用Windows窗体,但是:不要这样做而不是: 在C++/CLI中编写本机库的包装器代码 选择GUI框架并用C实现GUI# 通过C++/CLI包装器使用本机库 编辑-一个非常简单的包装示
ref class
es或value class
es)- 在C++/CLI中编写本机库的包装器代码
- 选择GUI框架并用C实现GUI#
- 通过C++/CLI包装器使用本机库
// native includes
#include <Windows.h>
#include <lmcons.h>
namespace My
{
// a managed class which is public and can be used by other assemblies
public ref class Wrapper
{
public:
// a function with a managed return type
static System::String^ CallNativeFunction()
{
// call native function
DWORD length = UNLEN;
wchar_t userName[UNLEN];
GetUserName(userName, &length);
// convert result of native function to managed System::String
System::String^ result = gcnew System::String(userName, 0, length);
return result;
}
};
} // namespace
int main(array<System::String ^> ^args)
{
// usage of the wrapper class
System::Console::WriteLine(My::Wrapper::CallNativeFunction());
return 0;
}
//本机包含
#包括
#包括
名称空间我的
{
//公共的托管类,可由其他程序集使用
公共引用类包装器
{
公众:
//具有托管返回类型的函数
静态系统::字符串^CallNativeFunction()
{
//调用本机函数
DWORD长度=UNLEN;
wchar_t用户名[UNLEN];
GetUserName(用户名和长度);
//将本机函数的结果转换为托管系统::字符串
系统::字符串^result=gcnew系统::字符串(用户名,0,长度);
返回结果;
}
};
}//名称空间
int main(数组^args)
{
//包装器类的用法
System::Console::WriteLine(My::Wrapper::CallNativeFunction());
返回0;
}
在C语言项目中,可以添加对c++/CLI项目的引用,然后简单地调用<代码>我的包装器.CalnTyrValuy()/< > > /P>您可能可以使用C++代码使用C++的GUI,但是为什么呢?Qt是C++管理的或非托管C++的一个很好的GUI,它有用于办公自动化的工具吗??Qt是独立的,不依赖于.NET,因此它是非托管C++。我相信可能有一些工具,但我不太确定。我知道C++和CLI,我已经尝试过,但是发现托管和非托管C++ Sun税金之间有很大的区别,所以这意味着我可以使用TestSerACT 3.02,OpenCV 2.4.11,SDL 2在C++ + CLI中,这是不推荐的。因为我试过了,很多头文件都有错误?为tesseract编写包装器是什么意思?如果是这样的话——3.02版的C#有书面包装,价格对我来说太高了。我认为visual studio的tesseract 3.02是非托管的,需要将.lib文件与.dll一起引用。我不想要整个tesseract功能。我添加了一个示例。我不熟悉tesseract或SDL,但我已经将OpenCV与C++/CLI结合使用了。确保使用“公共语言运行时支持(/clr)”而不是“/clr:pure”或“clr:pure”编译项目。然后可以混合使用这两种语法。编译将在两种Sintax上成功运行,但设计器崩溃,这会减慢我的工作。在问我的问题之前,我读了很多东西,这就是为什么它如此含糊的原因。AccTuraly我用更少的代码来寻找最好的方法-比如Qt,像Fr.Bru,因为它都是非托管C++,没有包装器或非托管C++到C语言的DLL需要额外的描述,但是坏的TIG是GNUW32编译器,QT需要编译库代码,并且更少的支持是可接受的。我会根据帖子的标题批准你的答案。设计师的问题是我写“不要做”这句话的原因之一。