2016-09-22 118 views
0

我寫一個C DLL的輸入,功能和它下面的Python腳本:ctypes的c_char_p在蟒蛇

//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傳遞給函數如上圖所示?

回答

0

一個非常愚蠢的錯誤我在做什麼,我一直保持在其他一些文件夾中的文件EDID,並運行其他腳本。我沒有給出文件名,而是給出了相對路徑。