Tag: visual c ++

如何在Win32 C ++项目中使用C#dll?

我正在研究一个解决方案,它的大部分核心引擎都是作为Win32 C ++开发的(并且与平台无关,也用于OS X),前段时间我们需要从C#调用C ++ dll的核心引擎,我能够在C#中加载主解决方案的DLL(在SO的某些线程的帮助下)。 但是现在我们在Managed C#dll中实现了某些东西,需要在Win32 C ++项目中使用它吗? (只提供函数定义和DLL)

如何在C ++中创建和初始化双精度SAFEARRAY以传递给C#

我需要从C ++调用我的C#方法 最初我的C#方法接受double []类型的参数,但是当从C ++调用时它变成了SAFEARRAY 在C ++中,我需要从双精度数组中获取数据,并填充SAFEARRAY。 我没有找到任何示例代码来执行此操作。 任何帮助表示赞赏

C#使用FindWindowEx按名称和序号进行子句柄处理

根据http://msdn.microsoft.com/en-us/library/ms633500(v=vs.85).aspx我定义了FindWindowEx函数。 using System.Runtime.InteropServices; [DllImport(“user32.dll”, CharSet=CharSet.Unicode)] static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle); 现在我能够找到第一个 “Button”控件的句柄(从Spy ++获取名称),将childAfter设置为IntPtr.Zero 。 IntPtr hWndParent = new IntPtr(2032496); // providing parent window handle IntPtr hWndButton = FindWindowEx(hWndParent, IntPtr.Zero, “Button”, string.Empty); 如何在父窗口中获取“Button”控件的第二个 , 第三个或任何句柄? 事实是,按钮标题可能会有所不同,所以我无法通过名称定义第四个参数直接找到它们。

如何通过COM互操作将字符串集合从C#返回到C ++

我为C#中的一些Display方法创建了一个com组件,它返回一个String List 如下所示。 在v ++中,我使用std :: lst来捕获Disp()的返回值但是它 给出编译器错误,Disp不是类的成员。 我将返回类型设为void 它工作正常。 什么我可以修改,以便Disp返回一个List和main(c ++)我必须使用 这个回报值。 Public interface ITest { List Disp(); } class TestLib:ITest { List Disp() { List li=new List(); li.Add(“stack”); li.Add(“over”); li.Add(“Flow”); return li; } } 编译并成功创建了Test.dll,还测试了test.tlb。 现在在用c ++编写的main函数中 #include #import “..\test.tlb” using namespace Test; void main() { HRESULT hr=CoInitialize(null); ITestPtr Ip(__uuidof(TestLib)); std::list li=new std::list(); […]

需要为C ++ / CLI创建什么类型的项目?

我正在为C ++ / CLI中的本机C ++方法编写一个包装器,它将它们暴露给C#。 现在我正在使用Visual Studio 2008.任何人都可以告诉我需要创建什么类型的项目,以便我的包装器将暴露给C#。 我在Visual Studio 2008中看到Visual C ++ —> CLR —->下有不同类型的项目 class library, CLR Empty Project, Windows form control library, CLR Console Application, Windows Forms Application, Windows Service 我应该使用哪一个?

如何使用Action委托参数方法将win32应用程序中的c ++方法的地址传递给ac#方法

我有一个使用C#库的win32应用程序。 C#库有一个方法,其中Action委托是一个参数,如下所示: public NetSocket(Action action) 我在win32应用程序中有一个ref类,其方法与Action委托签名相匹配。 我如何将此方法作为上面列出的NetSocket方法中的Action参数传递? Ben你的解决方案似乎有效,但是在将win32应用程序中的action delegate方法的System:Sting ^输入参数与C#代码中的Action委托的String输入参数进行匹配时存在编译错误。 c#代码中的Action委托使用String作为输入参数,win32代码中的Action委托方法尝试使用System::String^进行匹配以匹配它,但这不起作用。 // win 32 app – void ServerClass::ActionMethod(int iCommand, int iClientIndex, System::String^ message) // win32 app -server = gcnew NetSockets::NetSocket(gcnew Action(this,&ServerClass::ActionMethod)); // csharp – public NetSocket(Action action) 是否需要使用一些封送方法来将win32代码中使用的System::String与C#代码中使用的System::String进行匹配? 我传递System::String错误还是必须要做其他事情? 我必须做什么来将System::String^ message参数与string参数匹配? 谢谢 纠正我尝试了你的解决方案,它给出了以下错误: 1错误C3352: ‘void ServerClass::ActionMethod(int,int,System::String ^)’ :指定的函数与委托类型’void (void)’不匹配 @Ben:越来越近了。 现在当我使用你的解决方案编译代码时,我得到一个内部编译错误,如下所示: 错误C1001:编译器中发生内部错误。 c:\ program files(x86)\ […]

如何使用C#BackgroundWorker报告本机C ++代码的进度?

在我的Visual Studio解决方案中,我使用C#实现了UI,并且在本机C ++中实现了一些代码。 我使用BackgroundWorker类来实现报告执行长操作的进度。 如何使用BackgroundWorker报告本机C ++代码的进度? 换句话说,如何将C#代码重写为本机C ++并从C#调用获得的C ++代码? 如果无法直接重写下面的代码,那么了解其他等效解决方案可能会很好。 谢谢。 class MyClass { public void Calculate(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 0; i < StepCount; i++) { if (worker.CancellationPending) { e.Cancel = true; break; } // code which handles current iteration here worker.ReportProgress((i + 1) […]

Windows API和.net语言

人们总是告诉我,如果我正在做一些应该使用一些Windows API来完成任何进程级别工作的应用程序,我必须使用VC ++而不是任何其他.net语言。 这有什么道理吗? 使用VC ++可以完成的一切都可以用其他.net语言完成吗? 当比较它们的function时,所有的.net语言都是一样的吗?

是否有Visual Studio 2012 / VS11的自定义语言加载项?

好吧,我想在Visual Studio 2012中添加对PAWN语言的支持。 但由于缺乏经验和缺乏可编辑的教程/插件,这真的是一项艰巨的任务。 现在我只想添加文件类型和编译器,不需要intellisense,并且语法高亮可以使用C语法高亮显示器。 我知道有OOK语言实现和Boo语言,但这些加载项适用于VS2010,不会为VS2012编译。 我怎么做到这一点? 是否有语言加载项(对于VS2012)我可以编辑/使用作为基础/用作示例? 我的最后一次尝试导致黑色窗口/无法使用的VS2012 IDE。

Visual C ++ vs Visual C#,这是最好的学习方法吗?

我已经完成了我的C ++类和实践,之后我开始使用Ivor Horton的Visual C ++学习Visual C ++。 问题是我无法理解本书的语言,并且很难理解代码。 我想学习Visual C ++ for Windows应用程序开发并使我的未来(也因为我已经了解C ++)。 我的一些朋友告诉我切换到C#,因为它有很多库函数来创建GUI等,并告诉我在Visual C ++中编写Windows应用程序很困难。 现在在这些假期我将参加课程,你能帮助我,我应该坚持哪种语言,哪一种很容易? 从一开始我就想学习Visual C ++,有时我觉得在我不理解参考书等概念时很难。 非常感谢任何帮助,非常感谢您花费宝贵的时间。