Tag: 包装器

如何在C#中编写自己的包装器?

在我的另一个问题中,我一直试图找到一个知道在哪里可以找到C#的免费开源OCR库的人。 但是,似乎只有C ++库,显然,C ++不是C#。 其中一个回应建议在C#中编写自己的包装器。 我几乎不知道该怎么做,在哪里学习它,或它实际上是什么 – 除了我相信它通过改变的方法调用在dll中调用C ++方法,……这只是假设,的确如此。 请再帮助一个新手。 谢谢

C#包装器,用于三个指针的数组

我目前正在使用C#包装器来处理Dallmeier Common API灯。 查看上一篇文章: C#wrapper和Callbacks 我已经拥有了几乎所有“包装”但我仍然坚持包含一个包含三个指针数组和一个数组整数的回调: dlm_setYUVDataCllback int(int SessionHandle, void (*callback) (long IPlayerID, unsigned char** yuvData, int* pitch, int width, int height, int64_t ts, char* extData)) function设置回调,以接收当前YUV图像。 参数 SessionHandle:处理当前会话。 返回 PlayerID(请参阅回调)。 回调 – IPlayerId:Player对象的id – yuvData:指向Y,U和V部分图像的三个指针的数组 使用的YUV格式是YUV420平面(未打包)。 char * y = yuvData [0]; char * u = yuvData [1]; char * v = yuvData [2]; […]

C#包装器和回调

我正在为Dallmeier Common API灯(Camera&Surviellance系统)编写C#包装器,之前我从未编写过包装器,但我使用了Canon EDSDK C#包装器。 所以我使用Canon包装器作为编写Dallmeier包装器的指南。 我目前遇到包装回调的问题。 在API手册中,它具有以下内容: dlm_connect int(unsigned long uLWindowHandle, const char * strIP, const char* strUser1, const char* strPwd1, const char* strUser2, const char* strPwd2, void (*callback)(void *pParameters, void *pResult, void *pInput), void * pInput) 参数 – ulWindowhandle – 传递给ViewerSDK以在那里显示video和消息的窗口句柄 – strUser1 / 2 – 要登录的用户的名称。如果仅使用单用户登录,则strUser2为 – 空值 – strPwd1 / 2 […]

在C#中同步包装异步方法

我有一个第三方库,其中包含一个异步执行函数的类。 该类inheritance自Form。 该function基本上基于存储在数据库中的数据执行计算。 完成后,它会在调用表单中调用_Complete事件。 我想要做的是同步调用该函数,但是从非Windows窗体应用程序。 问题是,无论我做什么,我的应用程序块和_Complete事件处理程序永远不会触发。 从Windows窗体我可以通过使用“完整”标志和“while(!complete)application.doevents”来模拟同步运行的函数,但显然application.doevents在非Windows窗体应用程序中不可用。 有什么东西阻止我在Windows窗体应用程序之外使用类的方法(由于它inheritance自’Form’)? 有什么方法可以解决这个问题吗? 谢谢,迈克

.NET工具:提取接口并实现包装类

是否有可以为现有类生成提取和生成接口的工具? 我知道Visual Studio将为现有类提取接口。 但是,我还想生成一个实现该function的包装类。 我相信这对unit testing非常有帮助。 示例现有类: public class ThirdPartyClass { public void Method1(){} public void Method2(){} } 这可以由Visual Studio(Extract Interface)生成: public interface IThirdPartyClass { void Method1(); void Method2(); } 我想更进一步: public class ThirdPartyClassWrapper : IThirdPartyClass { private tpc = new ThirdPartyClass(); public void Method1() { tpc.Method1(); } public void Method2() { tpc.Method2(); } } […]

包装C ++以在C#中使用

好吧,基本上我要包装一个大的C ++项目(Recast) ,以便我可以在我的C#项目中使用它。 我一直试图这样做一段时间,这就是我到目前为止所做的。 我正在使用C ++ / CLI来包装我需要的类,以便我可以在C#中使用它们。 但是,我的C#项目中还需要大量的结构和枚举。 那么如何包装这些呢? 我现在使用的基本方法是将dllexport调用添加到本机c ++代码,编译为dll / lib,将此lib添加到我的C ++ / CLI项目并导入c ++头文件,然后将CLI项目编译为dll,最后添加此dll作为我的C#项目的参考。 我感谢任何帮助。 这里有一些代码。我需要可管理的方法,因为C ++项目非常庞大。 //**Native unmanaged C++ code //**Recast.h enum rcTimerLabel { A, B, C }; extern “C” { class __declspec(dllexport) rcContext { public: inline rcContect(bool state); virtual ~rcContect() {} inline void resetLog() { if(m_logEnabled) doResetLog(); } protected: […]