草庐IT

互操作性

全部标签

c# - 将简单的 C# DLL 转换为 COM 互操作组件

如何将C#DLL转换为可由VB6应用程序使用的COM互操作DLL? 最佳答案 这是我想在StackOverflow中找到但找不到的答案。事实证明,将简单的C#dll转换为COMdll相当容易。创建C#dll使用C#类项目创建解决方案。该类应该有一个用于属性/方法的接口(interface)和一个用于事件的接口(interface)。将GUID属性分配给类和接口(interface),如MSDN-ExampleCOMClass(C#ProgrammingGuide)中所述.另见:MSDN-Howto:RaiseEventsHandle

c# - Excel 互操作 : _Worksheet or Worksheet?

我目前正在撰写有关动态类型的文章,并给出了一个Excel互操作的示例。我以前几乎没有做过任何Office互操作,它表明了这一点。MSDNOfficeInteroptutorialC#4使用_Worksheet接口(interface),但也有一个Worksheet接口(interface)。我不知道有什么区别。在我荒谬简单的演示应用程序(如下所示)中,两者都可以正常工作-但如果最佳实践要求其中之一,我宁愿适本地使用它。usingSystem;usingSystem.Linq;usingExcel=Microsoft.Office.Interop.Excel;classDynamicEx

c# - 如何正确清理 Excel 互操作对象?

我在C#(ApplicationClass)中使用Excel互操作,并在我的finally子句中放置了以下代码:while(System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet)!=0){}excelSheet=null;GC.Collect();GC.WaitForPendingFinalizers();虽然这种方法有效,但即使在我关闭Excel之后,Excel.exe进程仍然在后台运行。只有在我的应用程序被手动关闭后它才会被释放。我哪里做错了,或者是否有其他方法可以确保正确处理互操作对象?

git - 将(大型)二进制文件保存在 Git 存储库中是否会影响克隆以外的操作性能?

我已经阅读了有关在Git存储库中存储二进制文件的现有问题,但有些方面仍然不清楚。存储库包含大约50MB的代码源和大约1GB的二进制文件。二进制文件很少更改。日常工作流程的性能是否受到二进制文件的负面影响?commitchanged,moved,movedandchangedfiles等操作;merge;pull和推。有问题的操作不涉及所述二进制文件。从性能的角度(例如RAM、CPU、HDD访问)从选定分支中删除这些文件是否有任何好处?而不是从存储库及其历史记录中完全删除文件。 最佳答案 如果文件从不涉及,则在性能方面没有任何区别。每

Git 与 Mercurial 存储库的互操作性

我在Mac上使用GIT。说够了。我有工具,我有经验。我想继续使用它。这里没有war......问题总是与互操作性有关。大多数人使用SVN,这对我来说很棒。GitSVN开箱即用,是一种简洁的解决方案。人们可以继续愉快地使用SVN,我不会失去我的工作流程,也不会失去我的工具。现在...有些人使用Mercurial。对他们来说很好:他们有他们的理由。但是我找不到任何开箱即用的GITHG。我不想切换到HG,但我仍然需要与他们的存储库进行互操作。你们中有人知道解决这个问题的简单方法吗? 最佳答案 有一个新的git-remote-hg提供原生支

c++ - 有没有一种简单的方法可以使用可互操作的代码在 CLI 中清理屏幕/保持输出窗口,避免 conio.h 和 ncurses.h?

我刚刚开始学习计算机科学。编程老师选择了C++来教我们过程式编程,因此给了我们代码示例和练习。我们得到的第一个样本是一个CLI“找到正确的数字”游戏。真正的第一项任务是简单地重新输入源代码,编译并运行它。我已经使用Linux好几年了(尽管我根本不是计算机Nerd),当我编译代码时,它失败了。查看错误日志让我注意到我的老师显然没有考虑Unix用户。她调用了conio.h库,它是MS-DOS编译器的旧header,正如我在那里读到的:https://stackoverflow.com/a/8792443/6723830由于使用了system("cls");和getch();,我得到了另外两

c# - C/C++ 与 C# 的互操作性命名约定

考虑以下Win32API结构:typedefstruct_SECURITY_ATTRIBUTES{DWORDnLength;LPVOIDlpSecurityDescriptor;BOOLbInheritHandle;}SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;当将此对象移植到C#时,我是否应该遵循此处使用的名称命名约定,如下所示:publicstruct_SECURITY_ATTRIBUTES{publicintnLength;publicunsafebyte*lpSecurityDescripto

c# - C++ 和 C# 互操作性 : P/Invoke vs C++/CLI

在寻找C#和C++之间互操作方法的过程中,我发现了article这解释了P/Invoke。我读了很多文章,声称C++/CLI不是完全的C++,需要一些努力来修改原始C++代码。我想问当我有一些我想从C#对象中使用的C++对象(代码/数据)时,最佳方式是什么。看来,为了使用P/Invoke,我应该提供C风格的API。这是真的吗?我的意思是,有没有办法将C++对象导出到C#,比如带有P/Invoke的SWIG?或者,我是否必须为此使用SWIG?将C++更改为C++/CLI有多难?与将C++重写为C#相比,是否值得尝试?C++设计得很好,所以用C#实现它并不是什么大问题。(题外话)有没有反过

c# - 适用于 Windows 窗体的 HwndHost - Win32/WinForm 互操作性

我需要在Windows窗体控件中托管一个Win32窗口。我在使用WPF时遇到了同样的问题,我通过使用HwndHost控件解决了这个问题。我遵循了这个教程:Walkthrough:HostingaWin32ControlinWPFWindows窗体中是否有任何等效控件?我有一个Panel及其Handle属性,我将此句柄用作我的Direct2D渲染目标窗口的父级://Registerthewindowclass.WNDCLASSEXwcex={sizeof(WNDCLASSEX)};//Redrawstheentirewindowifamovementorsizeadjustmentcha

c# - Java 和 C# 互操作性

我有两个程序。一个是C#,另一个是Java。这些程序很可能总是在同一台机器上运行。让他们互相交谈的最佳方式是什么?所以,为了澄清问题:这是一个个人项目(所以专业/昂贵的图书馆是不行的)。消息量低,每秒大约有1到2条消息。消息很小,一些原始类型应该可以解决问题。我想保持低复杂性。java应用程序部署为单个jar,作为另一个应用程序的插件。所以我必须合并的外部库越少越好。我可以完全控制C#应用程序。如前所述,两个应用程序都必须在同一台计算机上运行。现在,我的解决方案是使用类似csv格式的套接字。 最佳答案 我是jni4net的作者,JV