我试图在c / c ++ DLL中使用python 2.7.5。此DLL由另一个使调试成为挑战的应用程序使用。在敲打了几个小时之后,我已经将问题分离到了一个文件中读取的文件,其中包括'声明抛出异常。这个我不明白......'用'如果正确实施,应该吸收异常,对吧?无论如何,从命令行调用相同的python代码都没有问题。
我的C / CPP DLL调用此...
def parsetest(filename):
bytesin = getMD3Bytes(filename)
return bytesin
def getMD3Bytes(filename):
filename = 'lower.md3'
bytes = ''
valuetoreturn = 1
try:
with open(filename,'rb') as fileptr:
if fileptr != None:
bytes = fileptr.read()
valuetoreturn = 333
except:
valuetoreturn = 991
return valuetoreturn
如果DLL通过...运行此代码
pValue = PyObject_CallObject(pFunc, arguments);
通过......获得结果
iResult = PyInt_AsLong(pValue);
iResult的值为991而不是333,只有在'内部没有发生异常时才会发生这种情况。我知道,因为我让应用程序调用DLL弹出一个带有iResult的消息框。
对我来说更有趣的是,这有效......
C:\Program Files (x86)\DeleD CE\Plugins>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import parseMD3
>>> testval = parseMD3.parsetest('junk')
>>> print testval
333
>>> exit()
那么为什么CLI python会返回一个不同的结果,即从PyObject_CallObject调用相同的代码?为什么'与'这里表现不同?