2010-09-15 127 views
0

我从Python 2.5的编程VIX API,但现在我想将代码移植到Python 3.2字符串在Python 3

此功能打开虚拟机:

self.jobHandle = self.VixLib.vix.VixVM_Open(self.hostHandle, 
              "C:\\MyVirtualMachine.vmx", None, None) 

Previusly这个功能是从进口与此代码Vix.dll:

vix.VixVM_Open.restype = VixHandle 
vix.VixVM_Open.argtypes = [VixHandle,c_char_p,POINTER(VixEventProc),c_void_p] 

在2.5这个代码是正确的,但在3.2返回ctypes.ArgumentError

我能做些什么?

+0

我猜这是关系到一个事实,即所有字符串去的Unicode 3.0,但我不知道解决的办法是什么。 – recursive 2010-09-15 21:34:28

+1

包括整个堆栈跟踪可能是有用的。 – Daenyth 2010-09-15 21:37:52

+0

什么是整个堆栈跟踪???在python – igferne 2010-09-15 21:46:05

回答

5

你的第二个参数必须被编码到的是,VIX API就明白了,因为Python 3.x的现在创建所有字符串为Unicode格式。最简单的方法是修改您的第二个参数为:

"C:\\MyVirtualMachine.vmx".encode('ascii','ignore') 

这应该给你类型字节,它应该是更可口VIX的变量。

+0

使这一问题得到固溶!非常感谢你!!我可以在哪里投票? – igferne 2010-09-15 22:44:47