使用dos 作为中介实现cpython 和c# 交互
最近在使用python 处理一些图形的东西。
实现:对一些512 的图进行像素遍历RGBA 变量, 查询通道不是 255 255 255 颜色 的矩阵,进行切图到空白
之前使用c#进行 确实快10 倍左右, python 要等很长时间,
c++ 我自己不上手,所以想用python 调用c#dll 。程序使用cpython 写的,后来查询 可以使用ironpython 和dotnet进行交换,
这些不过,家里测试没有问题,可以到公司 总是不能创建工程, 我也是醉了。
https://social.msdn.microsoft.com/Forums/zh-CN/80e5d654-caf4-48c8-9c19-a6e2ae5f22bb/vs
安装这个 我也找不出来什么问题。
搞了半天, 想这样 c++ 使用CLR 封装 c# dll python 在调用c++的dll 这样一来下路不知道效率如何?
就开始了
using System;
using System.Collections.Generic;
using System.Text; namespace sen
{
public class Class1
{
public string each ()
{ return "ceshi";
}
}
}
然后c++ 进行封装
#pragma once using namespace System;
#using "..\debug\sen.dll"
using namespace sen ;
using namespace std ; namespace lr { public ref class Clname
{
// TODO: 在此处添加此类的方法。
public: char* send ()
{
Class1 ^ci= gcnew Class1(); System::String ^c = gcnew System::String(ci->each());
char* ss = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(c);
//printf (ss);
return ss ;
} };
}
编译是通过了。
麻烦出现在下一步, c++ 给python 调用还要绑定 看了看很麻烦
http://blog.csdn.net/fxjtoday/article/details/6059874
最后感觉有时间在研究吧, 感觉这样一部下路 在没有纯python快 那真实费力不讨好
、因为就是一个调用关系 ,后来想想 干脆使用 c#控制台
给python调用
using System;
using System.Collections.Generic;
using System.Text; namespace ConsoleApplication6
{
class Program
{
static int Main(string[] args)
{
if(args.Length>){
foreach (string i in args)
{
Console.WriteLine(i);
}
}
if (args[]=="")
{ Console.WriteLine();
return ;
}else
{
return ;
} }
}
}
编译成exe 给python 调用
#coding:utf-8 print "ss" #from ctypes import* #filename = r"N:\E\egret\Labs\projects\lr\Debug\lr.dll" #func = cdll.LoadLibrary(filename)
#print (func.send)
import os cmd = r"F:\c#\c#2005\ConsoleApplication6\ConsoleApplication6\bin\Debug\ConsoleApplication6.exe"
v = os.system("%s %s %s" % (cmd ,"dd" , "11dd"))
print "*************"
print type(v)
结果还是比较满意的,
ss
dd
11dd
*************
<type 'int'>
同时写好的 给max 脚本调用
cc = "F:\\c#\\c#2005\\ConsoleApplication6\\ConsoleApplication6\bin\\Debug\\ConsoleApplication6.exe"
c = DOSCommand (cc+ " sdf"+ "") "F:\c#\c#2005\ConsoleApplication6\ConsoleApplication6\bin\Debug\ConsoleApplication6.exe"
50
使用dos 作为中介实现cpython 和c# 交互的更多相关文章
- 深入浅出设计模式——中介者模式(Mediator Pattern)
模式动机 在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题: 系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他 ...
- 【转】设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
设计模式 ( 十五 ) 中介者模式Mediator(对象行为型) 1.概述 在面向对象的软件设计与开发过程中,根据"单一职责原则",我们应该尽量将对象细化,使其只负责或呈现单一的职 ...
- 设计模式之中介者模式(Mediator)
中间者模者模式原理:中介者维持所有要交互对象的指针或者对象,所有对象维持一个中介者的指针或者对象. #include <iostream> #include <string> ...
- Java中介者设计模式
中介者设计模式是一种很常见的设计模式,当中我们最为熟悉的就是我们的MVC框架.当中的C作为控制器就是一个详细的中介者,它的作用是把业务逻辑(Model),和视图(Viwe)隔离开来.使M V协调工作, ...
- 设计模式 ( 十六 ): Mediator中介者模式 -- 行为型
1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中. 对于一个模块或者系统,可能由很多对象构成,而且这些对象 ...
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
设计模式 ( 十五 ) 中介者模式Mediator(对象行为型) 1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各 ...
- 行为类模式(五):中介者(Mediator)
定义 定义一个中介对象来封装系列对象之间的交互.中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互. 试想一下,如果多个类之间相互都有引用,那么当其中一个类修改 ...
- C#设计模式:中介者模式(Mediator Pattern)
一,什么是中介者模式(Mediator Pattern)? 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.比如:如果我们实现两个人的交互,难道我们要定义两个对象 ...
- 设计模式之GOF23中介者模式
中介者模式Mediator 场景:公司中各个部门需要交互,通过中介总经理进行交互 核心: 如果一个系统中对象之间的联系成网状结构,对象之间多对多,将导致关系极其复杂,这些对象统称为“同事关系” 我们可 ...
随机推荐
- 9.求背景图片左边到#box盒子左边外框侧的距离
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 31. Next Permutation + 46. Permutations + 47. Permutations II + 60. Permutation Sequence
▶ 问题:字典序生成有关的问题. ▶ 31. 由当前序列生成字典序里的下一个序列. ● 初版代码,19 ms class Solution { public: void nextPermutation ...
- HTML5 Canvas ( 扩展context('2d') ) CanvasRenderingContext2D.prototype.你的方法名
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 24.OGNL与ValueStack(VS)-集合对象初步
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 首先在LoginAction中增加如下字段并提供相应的get/set方法: ...
- J2SE 8的脚本
1. 引擎工厂的属性 引擎 名字 MIME类型 文件扩展 Nashorn nashorn,Nashornjs,JSJavaScript,javascriptECMAScript,mcmascript ...
- windows系统安装参数
winnt32 /dudisable /s:. /unattend:winnt.sif /makelocalsource /tempdrive:C /syspart:C 以上各参数解释如下: /dud ...
- .Net 常用开发工具
,net常用开发工具 LinqPad使用 LinqPad连接Oracle 使用 LINQPad 将linq转换为 lambda表达式 或者 SQL语句 LINQPad 4 初次使用心得 一.双击 二. ...
- mongodb基础学习12-分组group操作
group可以实现常用的统计操作,如求最大值,最小值,求和 其中reduce是最关键的操作,是对每一条记录的具体操作 下面来看例子: 分组count求和 部分结果 下面的加了个查询条件,即查询价格大于 ...
- map模块使用方法
map指令使用ngx_http_map_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_map_module.ngx_http_map_modu ...
- hive 显示分区
显示某一张表的分区值 show partitions table_name;