如何在Python中加载和访问C/C++头

2024-05-08 20:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python与动态仿真软件(Vensim)进行接口。这个软件有一个头文件,vendll.h,我想使用它。在

我已经在ctypes模块中查找过这个,但是没有找到任何东西。我也希望避免使用cython,但我要看看这是怎么回事。下面是一个随软件提供的文件示例,说明如何在matlab中使用该文件。您可能会了解到我希望能够在python中复制的东西的要点。在

clear all
%*********************LOAD THE MODEL *************************

if not(libisloaded('VenDLL32'))
    hfile = ['C:\Users\Public\Vensim\dll\vendll.h'];
    loadlibrary('VenDLL32',hfile);
end

% Display Vensim DDL function calls and signatures
libfunctionsview VenDLL32

%% *********************EXECUTE SIMULATION *************************
% check calllib returns to verify initiation

str=['SPECIAL>LOADMODEL|RABFOX.vpm'];
calllib('VenDLL32','vensim_check_status')
calllib('VenDLL32','vensim_command',str) 
str=['MENU>RUN|o'];
calllib('VenDLL32','vensim_command',str)


%% *********************RETRIEVE DATA *************************
% retrieve data from the post simulation execution

tnum = 201;
timepts = int32(tnum);

mytime = zeros(1,tnum);
mytimePtr1 = libpointer('singlePtr', mytime);

myrabpop = zeros(1,tnum);
myrabpopPtr1 = libpointer('singlePtr', myrabpop);

% vensim get data command
[int32_status, cstring_vdf, cstring_var1, cstring_var2, singlePtr_var1, ... 
    singlePtr_var2] = calllib('VenDLL32','vensim_get_data','CURRENT.vdf', ...
    'Rabbit Population','time',myrabpopPtr1(1),mytimePtr1(1),timepts);

myrabpopPtr1(1).Value'
mytimePtr1(1).Value'

%% ******************** UNLOAD VENSIM DLL ********************
% unload the library 

unloadlibrary VenDLL32

在matlab中看起来很简单,所以python应该是小菜一碟吧?在

如何加载头文件并通过python访问其内容?在

还有一个等效的静态链接库(.lib)文件(我没有看到任何.dll),名为vendll32.lib。如果我不能使用头文件,有没有一种类似的方法来利用这个文件?在


Tags: 文件data软件头文件commandstrcstringtnum