python 2 - 为什么'与'在嵌入式c代码中表现不同?

时间:2015-05-03 14:39:07

标签: python c++

我试图在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调用相同的代码?为什么'与'这里表现不同?

0 个答案:

没有答案