通过COM,用Python调用C#库
1.C#配置
(1)类库
(2)COM互操作打勾
(3)代码中类必须要有无参构造函数,否则不会注册成功!!!
using System;
using System.Runtime.InteropServices;
namespace MyLibrary
{
[ComVisible(true)] // 确保类和成员在COM互操作中可见
[Guid("12345678-1234-1234-1234-1234567890AB")] // 用于标识COM组件的GUID
public class MyComponent
{
public string GetMessage()
{
return "Hello from C#!";
}
public int AddNumbers(int a, int b)
{
return a + b;
}
public Point AddPoints(Point a,Point b)
{
Point p = new Point();
p.x = a.x + b.x;
p.y = a.y + b.y;
return p;
}
}
[ComVisible(true)]
[Guid("B479D2EB-F2D5-4EC9-B83B-CB007966E0B0")]
public class Point
{
public int x;
public int y;
}
[ComVisible(true)]
[Guid("B481D2EB-F2D5-4EC9-B83B-CB007966E0B0")]
public class Testtt
{
}
[ComVisible(true)]
[Guid("B461D2EB-F2D5-4EC9-B83B-CB007966E0B0")]
public class Point2
{
public int x;
public int y;
public Point2()//必须要有无参构造函数
{
}
public Point2(int x, int y)
{
this.x = x;
this.y = y;
}
}
[ComVisible(true)]
[Guid("B451D2EB-F2D5-4EC9-B83B-CB007966E0B0")]
public class Point3//注册失败,因为没有无参构造函数
{
public int x;
public int y;
public Point3(int x, int y)
{
this.x = x;
this.y = y;
}
}
}
(4)用管理员的方式对类库重生成!
(5)在注册表中查看,以上类是否注册成功,win+R,regedit
,导航到以下路径HKEY_CLASSES_ROOT\CLSID
:
可以发现,正好是C#代码中的GUID。
(6)python代码:
发现调用成功。
(7)拷贝到其他电脑上需要做的事:
注册COM组件:在目标电脑上,使用regsvr32命令注册COM组件。打开命令提示符或PowerShell,并执行以下命令:
regsvr32 path\to\MyLibrary.dll
其中,path\to\MyLibrary.dll是你在目标电脑上放置MyLibrary.dll文件的路径。这将确保COM组件在目标电脑上正确注册。
需要注意的是,如果目标电脑的操作系统架构与你开发时使用的不同(例如,32位与64位之间的转换),则还需要确保使用相应架构的组件和设置。
通过COM,用Python调用C#库的更多相关文章
- Python调用C库
Python调用C库 Python可以利用ctypes库很方便地调用C的库函数. C库例程: # file: a.c int sum(int a, int b){ int t = 0; int ...
- 使用python调用zxing库生成二维码图片
(1) 安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...
- 一个简单的C共享库的创建及Python调用此库的方法
/********************************************************************* * Author : Samson * Date ...
- python调用Opencv库和dlib库
python是一门胶水语言,可以调用C++编译好的dll库 python调用opencv-imggui.dll文件 https://www.cnblogs.com/zhangxian/articles ...
- 使用Python调用动态库
我个人在日常使用电脑时,经常需要使用Google,于是就要切换代理,基本上是一会儿切换为代理,一会儿切换成直连,老是打开internet 选项去设置,很不方便,于是我萌生了一个想法: 做一个开关,我想 ...
- python调用C库的方法
主要介绍两种,一种是python的标准库内置的ctype,另一种是第三方的pybind11. 除此之外,还有其他的方案,例如,CFFI.Cython等等. 一.python的标准库ctype
- python调用opencv库教程
OpenCV安装pip install --upgrade setuptoolspip install numpy Matplotlibpip install opencv-python OpenCV ...
- python 调用第三方库压缩png或者转换成webp
因为工作需要去研究了下png的压缩,发现转换成webp可以小很多,但是webp在手机上的解码速度比png的解码速度慢很多.出于进几年手机设备的处理器的性能也不错了,所以准备两套方案. 在网上搜索了一些 ...
- [Python] Python 调用 C 共享库
Linux/Unix 平台下共享库(Shared Library)文件后缀 .so:在 Windows 平台称为动态链接库(Dynamic Link Library),文件名后缀为 .dll. 利用 ...
- Python调用C++
/***gcc -o libpycall.so -shared -fPIC pycall.c*/ #include <stdio.h> #include <stdlib.h> ...
随机推荐
- 【攻防世界】ezbypass-cat
ezbypass-cat 题目来源 攻防世界 NO.GFSJ1183 题目描述 只有一个登录界面,没有注册界面,扫目录也扫不出有用的文件.sql注入也无果,有些难以下手. 题解一 该题解可能是一个非预 ...
- Docker安装与镜像加速器的配置
Docker简介 百科说:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机 ...
- pikachu搭建
pikachu靶场搭建教程 下载小皮面板phpstudy: 小皮官网:https://www.xp.cn/ 下载pikachu : https://github.com/zhuifengshaonia ...
- ubuntu20.04使用EasyConnect
起因:BUAA校外访问内网vpn的客户端 用的学校vpn内下载的deb包EasyConnect_x64_7_6_7_3.deb,就直接sudo apt install安装了,之后应用的目录在/usr/ ...
- 带大家做了个 AI 项目,没想到这么简单!
大家好,我是程序员鱼皮,现在已经是全民 AI 时代了,咱们程序员更要想办法榨干 AI,把 AI 利用起来.前几天我一时兴起,直播用 2 多个小时的时间,从需求分析开始,带大家做了一个 AI 海龟汤游戏 ...
- HTTP 尝试获取 Client IP
HTTP 中获取 Client IP 相关策略需求, 在当下网络环境中多数只能提供建议作用. 更多的是 通过其它唯一标识来挖掘更多潜在价值. 本文主要就一个内容, 如何最大可能尝试在 HTTP 请求中 ...
- linux安装python centos
下载安装包 可以到官网 ftp 地址,复制指定 python 版本源码安装包下载链接 https://www.python.org/ftp/python/ 或者到官网 downloads, 复制指定 ...
- Delphi Inputbox 输入时显示‘*’号
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 多态的成员访问特点和好处--java进阶day02
1.多态的成员访问特点 1.成员变量访问特点 分为两个阶段,编译阶段,系统会看父类中是否存在该成员变量,如果存在,运行阶段就会使用父类的成员变量,否则报错 当我们在父类中删去num时,编译直接报错 2 ...
- 【长知识】BIOS
设置最新UEFI BIOS 本章导读 BIOS是电脑启动和操作的基础,若电脑系统中没有BIOS,则所有硬件设备都不能正常使用.UEFI是目前最新的BIOS类型,以后会逐渐取代传统的BIOS.本章将认识 ...