我需要在我的simulink模型中嵌入一个具有多个实例的s-函数.在S-函数中,我需要加载一个dll文件,但是它应该只在s-函数的一个实例中完成。我写tlc如下:.%函数启动(块、系统)输出
dll_setup=(DLL_SETUP)GetProcAddress(dll_handle,= dll_handle = LoadLibraryA("mydll");.
在代码生成之后,这些启动函数行被添加到每个s函数实例的源代码中。但是,我需要加载一次dll。是否可以只为s-函数的第一个实例添加这些行?
注意:我知道在TLC文档中,当模型中有多个s-函数实例时,它声明避免内联。
发布于 2016-11-03 17:48:56
最简单的方法是将这些行放在外部文件中,并使用静态变量来跟踪一次性初始化。然后从Start函数中添加对该函数的调用。如果要从tlc生成该外部文件,请查看BlockTypeSetup、TLC函数和LibAddToModelSources,以将源文件添加到生成的代码中。
发布于 2016-11-02 13:28:10
这是一些模糊的记忆,但我认为你可以用一个全球性的:
%assign ::DLL_LOADED = 0
%function Start()
%if :: DLL_LOADED == 0
%% load DLL here
%assign ::DLL_LOADED = 1
%endif我想类似的事情会奏效的。
https://stackoverflow.com/questions/40375278
复制相似问题