2016-11-02 6 views
0

시뮬 링크 모델에서 여러 인스턴스가있는 s 함수를 인라인해야합니다. S-function에서 dll 파일을로드해야하지만 s-function의 한 인스턴스에서만 수행해야합니다. 나는 다음과 같이 tlc를 썼다. ..... % 기능 시작 (블록, 시스템) 출력여러 인스턴스가있는 s 함수에 대한 MATLAB 코드

dll_handle = LoadLibraryA ("mydll"); dll_setup = (DLL_SETUP) GetProcAddress (dll_handle, "setup"); .....

코드 생성이 끝나면 Start 함수 줄이 s-function의 모든 인스턴스에 대한 소스 코드에 추가되었습니다. 그러나, 나는 한 번 dll을로드해야합니다. s- 함수의 첫 번째 인스턴스에만 해당 행을 추가 할 수 있습니까?

참고 : 모델에 s-function의 인스턴스가 여러 개있을 때 인라인되지 않도록 TLC 설명서에 명시되어 있습니다.

답변

0

가장 간단한 방법은 이러한 파일을 외부 파일에 저장하고 정적 변수를 사용하여 일회성 초기화를 추적하는 것입니다. 그런 다음 Start 함수에서 해당 함수에 대한 호출을 추가하십시오. tlc에서 외부 파일을 생성하려면 BlockTypeSetup TLC 함수를 찾고 LibAddToModelSources를 사용하여 소스 파일을 생성 된 코드에 추가하십시오.

0

이 약간 흐릿한 기억에서,하지만 난 당신이 지구처럼 사용할 수 있습니다 생각 :

%assign ::DLL_LOADED = 0 

%function Start() 

%if :: DLL_LOADED == 0 
    %% load DLL here 
    %assign ::DLL_LOADED = 1 
%endif 

나는 그런 일이 일 것이라 생각합니다.