ctypes c_char_p作为python中函数的输入

时间:2016-09-22 08:43:07

标签: python c dll ctypes

我正在为它编写一个C DLL和一个python脚本,如下所示:

//test.c
__declspec(dllexport) HRESULT datafromfile(char * filename)
{
  HRESULT errorCode = S_FALSE;

    if (pFileName == NULL)
    {
        return E_INVALIDARG;
    }

    FILE *fp = NULL;
    fopen_s(&fp, pFileName, "rb");

    if (fp == NULL)
        return E_FAIL;

some more lines of code are there....

我写的python脚本如下:

//test.py
import sys
import ctypes
from ctypes import *

def datafromfile(self,FileName):
    self.mydll=CDLL('test.dll')
    self.mydll.datafromfile.argtypes = [c_char_p]
    self.mydll.datafromfile.restypes = HRESULT
    self.mydll.datafromfile(FileName)

在主要呼叫时我将文件名指定为:

FileName = 'abcd.EDID'
datafromfile(FileName)

但是代码出错了,Windows Error: Unspecified Error。 任何人都可以帮助我如何将c_char_p传递给上面显示的函数吗?

1 个答案:

答案 0 :(得分:1)

我正在做的一个非常愚蠢的错误,我将edid文件保存在其他文件夹中,并从其他文件运行脚本。我没有给出文件名,而是提供了相对路径。