c#跨平台的调用com和dll

记一次Redhat7无法正常开机的解决过程 事情的起源是使用VMWare虚拟平台克隆一个虚拟机的时候,克隆之前将网络配置全部删掉,然后将虚拟机关机,然后克隆出来一台之后,发现两台都无法正常的开机,症状是监视器会显示一个灰色的7背景,然后虽然没有死机但是也无法进入登录窗口。由于克隆之前网络配置都被删掉了,所以也无法SSH远程登录。使用Ctrl+Alt+F2-6会会出现命令行,但是无法执行任何命令,如下: 开机之后显示转圈圈,然后圈圈消失,然 阅读详情

      由于工作关系,我需要对一个原来用c++开发的项目改成c#开发,但是对于一些原有的组件又不想重新再去写,想最大限度的重用代码,于是就要考虑跨平台的调用,经研究发现,在c#中调用组件的方式基本有:

1,调用普通的dll(不符合com规范的)

这采用的方式为

[DllImport("user32.dll", EntryPoint="MessageBoxA")]

static extern int MsgBox(int hWnd, string msg, string caption, int type);

缺点是不支持类的调用,只能是单独的方法。

2,调用ocx

ocx是一种特殊的dll,它符合com规范,一般用MFC开发的activeX编译后得到的是ocx,需要regsvr32来注册,该类型的ocx可以在c#中以类的形式调用,类似于vs中的控件,其缺点我认为是这类控件一般需要一个容器,对于一些不需要界面的组件最好不要选择这种方式。

3,调用符合com规范的dll

这类dll一般是用ATL开发的activeX,这类组件不需要容器,支持类的调用,但是也需要像ocx一样用regsvr32来注册,其缺点我个人认为就是函数的返回值STDMETHODIMP,转换到c#中就直接被隐藏了,变成了void,也许这还有待于我的进一步学习。


参考资料:

http://developer.51cto.com/art/200908/141874.htm

http://www.cnblogs.com/chinadhf/archive/2010/09/03/1817336.html

http://blog.163.com/chen_xinghuan/blog/static/172201582201094115750954/

告别‘yum install’转圈圈:用本地源为你的Rocky 9虚拟机提速(基于VirtualBox/VMware) 本文详细介绍了如何为Rocky Linux 9虚拟机配置本地yum源,显著提升软件安装速度。通过获取并挂载ISO镜像、配置本地仓库文件等步骤,解决网络延迟带宽浪费问题,特别适合开发工具频繁安装无外网环境。 阅读详情

相关推荐

VMware虚拟机安装Ubuntu全流程:从零搭建高效Linux开发环境

虚拟化技术通过在单一物理硬件上创建隔离的虚拟环境,实现了资源的灵活分配与系统隔离。其核心原理是利用虚拟机监控程序(Hypervisor)在硬件与操作系统之间构建抽象层,允许多个操作系统实例并行运行。这项技术的价值在于为开发、测试学习提供了安全、可复现且成本可控的沙盒环境,避免了物理机双系统安装的风险云服务器的持续费用。在应用场景上,它广泛用于软件兼容性测试、安全研究、教学演示以及构建完整的服务器模拟环境。本文聚焦于使用VMware Workstation Player这一流行工具,详细解析如何安装优化

weixin_32821533的博客 334

C#生成基于COMDLL供VB调用

用Visual C#生成的DLL文件已经以前的DLL文件有了本质上的区别。VisualC、Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件。但用Visual C#编译器生成的受托管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实质上是一种中间语言(IL)代码,需要经过NGWS (Next Generat

mrliming的专栏 1923

CentOS7系统启动故障排查:图形界面卡转圈与命令行starting switch root的SELinux修复指南

本文详细解析了CentOS7系统启动时图形界面卡转圈或命令行卡在“starting switch root”的故障现象,其核心原因通常是SELinux策略加载失败。文章提供了通过GRUB进入救援模式诊断、临时禁用SELinux进入系统,以及最终通过重装selinux-policy策略包并重建文件安全上下文的完整修复方案,帮助用户彻底解决启动问题。

weixin_29229055的博客 617

c++ 中使用c#dll com方式

c++ 中使用c#dll,如果使用的工程支持clr是没有问题的,但是如果不支持,就只能是用com方式。因为c++实现一个代理的http服务很麻烦,而用c#确很容易。这时候我就想用c#实现http代理的这么

xie__jin__cheng的博客 1509

使用C# 跨平台调用 p/invoke DllImport

原帖地址http://hi.baidu.com/xxl_cc/blog/item/09bba34b7f4f10f783025c38.html使用C# 跨平台调用 p/invoke DllImport直接从 C# 调用 DLL 导出若要声明一个方法使其具有来自 DLL 导出的实现,请执行下列操作:使用 C# 关键字 static extern 声明方法。 将

luckyleaf521的专栏 1941

虚拟机安装多个centos7进行集群

1 虚拟机镜像的选择 做项目时需要考虑高并发场景,最先想到的就是搭建一个集群进行负载均衡,本来想直接在服务器上进行试验,后来发现要多台服务器而且集群貌似需要在内网段进行,所以选择了虚拟机进行集群。因为电脑内存有限,所以选择了centos7最小镜像进行搭建,minimal版本的ios镜像,这是我选择的镜像下载地址Centos7下载 我这里使用了virtualBox作为我的虚拟机软件,因为它相比VM消耗的资源更少,安装过程就不详细展述了,这里要注意的是网络的选择,需要选择两个网卡: NAT—用来连接外网,下载软

Shawn的个人博客 843

记一次 Windows 电脑开机登录后黑屏的问题分析与排查

起因 一阳光明媚的晌午,本人心情愉悦地翻开笔记本,一如既往地摁下开机键后,略过了主板开机动画,熬过了 Windows 登录(win10 系统)的魔力转圈圈,最终却没能等来那昔日熟悉的桌面与亲切的图标们,直接映入眼帘的是下图: 嗯,就这样盯着它,10s…30s…1min…时间安静的流淌,内心也慢慢掀起了波澜,身经百战的心灵意识到不好的事情要发生了;Nice,人在家中坐,bug 天上来,不过黑屏给了我黑色的眼,我将用它来寻找问题。 问题探索 首先,调整好心态,冷静就有希望,慌乱就会败北(或者是像本人

Muyema的博客 4169

终极折腾指南:在 Minecraft 里从零组装一台真实计算机,真的能开机运行 Windows

你信吗?在 Minecraft 的方块世界里,真能鼓捣出一台会开机、能装系统、甚至跑得动 Windows 的"真电脑"。这不是红石电路的抽象模拟,而是 **MCVmComputers** 这款 Fabric 模组干出来的事——它把 VirtualBox 整个塞进了游戏里,让玩家从绕地球飞的卫星上订购 CPU、内存、显卡,亲手装进机箱,再对着显示器右键,开启一段货真价实的装机与开机之旅。 ## 为

gitblog_00625的博客 1085

ESXi 6.5 虚拟机直通K80显卡并安装NVIDIA显卡驱动:

本地环境: Dell PowerEdge R720 2680v2 *2 ddr3 1333MHz 32G ESXi 6.5 U2 Dell定制版 CentOS 7虚拟机 WIn10 虚拟机 K80显卡 同时还插着AMD显卡 安装驱动前的必备操作: 参考博客: https://blog.51cto.com/5001660/2483307 按照这个设置, 能完成一大半的操作 但是还有些必备操作, 否则虚拟机开机会出问题 以下全部是我遇到的问题 虚拟机加载到42%, 然后报打开模块DevicePow

Janus 8382

完美解决:*.vmx是由VMware产品创建,但该产品与此版VMware workstation不兼容因此无法使用…

vmware版本

君君的博客 3万+

VMware Fusion运行macOS虚拟机的官方路径与核心避坑指南

macOS虚拟化是苹果生态下特殊的系统级技术实践,其本质依赖Hypervisor.framework与Apple Silicon硬件协同,而非通用虚拟化方案。原理上需穿透Gatekeeper门禁、公证(Notarization)及系统扩展授权三重安全机制,技术价值在于为开发者提供跨版本兼容性测试、Kext驱动调试安全沙箱等不可替代能力。典型应用场景包括macOS App多版本验证、内核扩展开发及TCC框架研究。本文聚焦VMware Fusion这一唯一获Apple官方适配的macOS原生虚拟化工具,深入解

weixin_30832143的博客 451

VS Code远程连接Ubuntu虚拟机实战指南

SSH远程开发是现代Linux环境编程的基础能力,其核心在于建立安全、稳定、低延迟的终端与IDE协同通道。原理上依赖OpenSSH服务、密钥认证机制及端口转发策略,技术价值体现在消除文件同步摩擦、统一调试环境、实现跨系统无缝协作。典型应用场景包括Python/Docker开发、教学实验沙箱构建、微服务本地联调等。本文聚焦VS Code Remote-SSH在Ubuntu虚拟机(VMware/WSL2)中的落地实践,覆盖SSH服务启用、UFW防火墙配置、ed25519密钥生成与部署、~/.ssh/config

all00747的博客 564

在centos7上搭建gitlab服务器详细教程

在自己本地虚拟机搭建gitlab服务器: 首先,开启centos7的虚拟机 其次,xshell连接到虚拟机服务器地址,进行 命令行操作。 一、首先要在centos系统上面安装所需要的依赖:ssh,防火墙,wegt,等。 安装SSH协议 sudo yum install -y curl policycoreutils-python openssh-server 若如下图,则表示成功 将SSH服务设置成开机自启动: sudo systemctl enable sshd 启动SSH服务 su

陌上人如玉,公子世无双 444

ESXI问题点记录及解决方案汇总

备份服务器一定是先克隆而不是迁移(迁移的时候会因为快照的问题导致失败;而克隆不存在这个问题,最保险的方法) 1、删除快照卡在50%或99%不动怎么办? 答:等待删除完成,勿做其它操作 2、VCSA管理平台提示“配置问题,需要整合虚拟机磁盘” 答:ESXI提示“ XXX com.vmware.vc.VmDiskConsolidationNeeded.formatOnVm not found XXX” 右键某一台虚拟机 (1)快照-整合:失败 (2)新建快照-删除快照:失败 (3)将虚拟机克隆到

qq_35805415的博客 7435

Citrix云桌面运维实战:用户会话一直转圈加载,无法进入桌面终极排障方案

Citrix云桌面运维实战

尘烟梦雨如墨染的博客 141
上一篇: c#调用c/c++ 动态库时遇到unsigned char * 的转换问题
下一篇: 博客订阅
liujihua2008
博客等级 码龄16年 0粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值