擅长:python、mysql、java
<p>当你与一个C程序接口时,你会遇到C语言的所有困难。你所犯的任何错误都会导致缓冲区溢出、堆栈溢出、分段冲突等。如果程序因为错误而写入一个随机的内存位置,它的行为在所有情况下都不一样。在您的计算机上,它似乎在交互模式下工作,但从窗口命令提示符运行时崩溃。但在另一个操作系统上,或者在另一台机器上,甚至在另一天的同一台机器上,它的行为可能会有所不同。它的行为不是决定性的。在</p>
<p>有鉴于此,让我们看看下面的一行:</p>
<pre><code>PCO_api.PCO_OpenCamera(ctypes.byref(camera_handle), 0)
</code></pre>
<p>根据API文档,在上面的调用中,<code>PCO_OpenCamera</code>函数不仅仅返回<code>camera_handle</code>中的值;它还使用<code>camera_handle</code>作为输入值。但是,您将<code>camera_value</code>未初始化。我知道你应该在打电话之前把它调零。另一个问题是<code>PCO_OpenCamera</code>返回一个应该检查的值。如果有问题,但程序继续运行,好像没有问题一样,它将继续对<code>camera_handle</code>使用随机值。所以程序中的一个错误似乎是前一行(保存打印)应该</p>
^{pr2}$
<p>另一个是不检查<code>PCO_OpenCamera</code>的返回值。(我不知道剩下的是否可以,我没有仔细检查过。)</p>
<p>另外,<code>c_ulong</code>是Windows<code>HANDLE</code>类型的正确类型吗?我不知道,也许还可以。即使<code>c_ulong</code>比<code>HANDLE</code>大,它仍然是<em>可能</em>的。但可能还不够,你必须确定自己知道自己在做什么。在</p>