使用dos 做爲中介實現cpython 和c# 交互

最近在使用python 處理一些圖形的東西。python

實現:對一些512 的圖進行像素遍歷RGBA 變量, 查詢通道不是 255 255 255 顏色 的矩陣,進行切圖到空白c++

以前使用c#進行 確實快10 倍左右, python 要等很長時間, c#

c++ 我本身不上手,因此想用python 調用c#dll 。程序使用cpython 寫的,後來查詢 能夠使用ironpython 和dotnet進行交換,測試

這些不過,家裏測試沒有問題,能夠到公司 老是不能建立工程, 我也是醉了。spa

 https://social.msdn.microsoft.com/Forums/zh-CN/80e5d654-caf4-48c8-9c19-a6e2ae5f22bb/vs.net

安裝這個 我也找不出來什麼問題。debug

搞了半天, 想這樣  c++ 使用CLR 封裝 c# dll  python 在調用c++的dll  這樣一來下路不知道效率如何?code

就開始了blog

using System;
using System.Collections.Generic;
using System.Text;

namespace sen
{
    public class Class1
    {
        public  string  each ()
        {

            return "ceshi";
        }
    }
}

而後c++ 進行封裝 utf-8

#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>0){
                foreach (string i in args)
                {
                    Console.WriteLine(i);
                }
            }
            if (args[1]=="11")
            {
                
                Console.WriteLine(50);
                return 50; 
            }else 
            {
                return 20;
            }

        }
    }
}

編譯成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"+ " 11")

"F:\c#\c#2005\ConsoleApplication6\ConsoleApplication6\bin\Debug\ConsoleApplication6.exe"
50
相關文章
相關標籤/搜索