最近在使用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