通过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> ...
随机推荐
- vue - [03] Hello World~
题记部分 (1)选择一个合适的目录,然后进入终端,执行:vue create account-manager (2)切换目录到account-manager,执行npm run serve启动开发服务 ...
- docker - [14] redis集群部署
本章节是在一个服务器上进行演示 一.准备工作 (1)创建redis集群使用的网络:redis-net docker network create redis-net --subnet 172.38.0 ...
- 读论文-新闻推荐系统:近期进展、挑战与机遇的评述(News recommender system_ a review of recent progress, challenges, and opportunities)
前言 今天读的论文为一篇于2022年发表在"人工智能评论"(Artificial Intelligence Review)的论文,文章主要强调了NRS面临的主要挑战,并从现有技术中 ...
- MyCat分库分表-主从
一.MySQL数据同步 1.主节点配置,log-bin,指定文件名称 2.主节点配置server-id,默认为1 vim /etc/my.cof 在[mysqld]下添加如下配置 log-bin=im ...
- 实现Windows之间(win10)的桌面连接的三步走方法
实现Windows之间(win10)的远程桌面连接的三步走方法 目录 目录 实现Windows之间(win10)的远程桌面连接的三步走方法 目录 环境 step1:打开两台Windows电脑的 ...
- 【Bug记录】defineEmits 在 TS 项目报错
前言 单文件组件 <script setup> 是 Vue3.2 版本后非常流行的写法. 但是在开发过程中,按照官网使用 defineEmits ,结果项目报错,无法运行. 错误截图 Un ...
- 分享一个我遇到过的“量子力学”级别的BUG。
你好呀,我是歪歪. 前几天在网上冲浪的时候,看到知乎上的这个话题: 一瞬间,一次历史悠久但是记忆深刻的代码调试经历,"刷"的一下,就在我的脑海中蹦出来了. 虽然最终定位到的原因令人 ...
- Oracle临时表会随另外一个表的创建自动提交并清空
创建一个临时表,用它导入一些数据 用这个临时表生成另外一个表,用create table ... 但生成的这表总是空的. 原来create table 前会进行提交commit, 而临时表在commi ...
- 基础指令:grep、wc、管道符( | )、head、tail、less、more、sort、uniq、Linux软件安装、重定向及
目录 3.0 dd读取.转换并输出数据 3.1 压缩 (tar.zip).解压缩(tar xf.unzip) 3.2 ln软硬链接 3.2.1 软链接: 3.2.2 硬链接: 3.3 find文件查找 ...
- vmware vsphere 6.5
vmware vsphere 6.5是vsphere软件的经典版本,也是一款业界领先的服务器虚拟化平台,作为基础平台,是任何云计算环境的理想之选,其组件包括vCenter Server.ESXi.vS ...