S/W 개발/LabView&CVI2008.03.20 11:12
LabView의 기능중에 컴파일 기능이 있다.

이중 DLL 만들기가 있다.

랩뷰가 생성되는 파일은 M$에서 사용되는 COFF 파일이다.
VCL에서는 OMF 형식으로 되니까.. 이부분을 변환해 줘야 된다고 생각하고 정적으로 불러왔으나 되지 않는다.

혹시나 해서 동적으로 불러보니 잘 된다.. ㅠㅠ(하루 까먹었다..)

우선 형을 정의해 주고..
typedef double (__stdcall *TTempTest)(double);

DLL을 인스턴스로 선언해주고..
HINSTANCE  Dll;

동적으로 생성할  함수형도 미리 선언
TTempTest DLLFunc;

사용하고자 하는 곳에서... (또는 생성부에서...) DLL 로드
둘 중 편한대로 사용..(2000과 XP 모두에서 사용할려면 아래 방식으로 해야 된다고 한다.. 2000 시스템이 없어서 확인 못함... XP는 사용가능)
 Dll = LoadLibrary("Temp.dll");
 Dll = LoadLibraryEx("Temp.dll", NULL, LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE);

이제 동적으로 불러오고.... 실행...
 DLLFunc = (TTempTest)GetProcAddress(Dll, "TempTest");
 if(DLLFunc)
 {
       DLLFunc(8);
 }

참고로... 화면을 불러오고자 할때에는...

VI 설정화면에서  윈도우 동작을 플로팅으로 해야 한다..
기본으로 할 경우에는 화면이 동작하지 않는다.
그리고 호출시 프런트패널을 보일것인지.. 로드시 보일것인지도 판단하도록 하고..

그리고 While문을 사용할경우에도 주의..하자.. 
그래프나 차트랑 연동될경우..
하나의 창만 나타날수도 있다.

블록다이어그램에서 인보크노드에서 설정해도 된다..

그리고.. 함수의 입출력 부분을 커넥트 처리를 꼭하자.. 이거 안하면 함수의 인자나 반환값을 받을수가 없다.



Posted by 가희나희아빠 희자매(가희나희)아빠
TAG , ,

티스토리 툴바