2014-02-27 9 views
1

LabVIEW (현재 LV2009를 실행 중입니다)에서 보그 선 형상을 계산하는 데 필요한 기능을 구현하는 this C++ code을 인터페이스로 연결하려고합니다. DLL에 코드를 성공적으로 컴파일하고 DLL을 가리 키도록 Call Library Function Node을 설정했습니다. 그러나이 함수는 complex double 유형의 벡터를 예상하고 complex double 유형의 벡터를 반환합니다. 그러나 복잡한 double은 함수 프로토 타입을 설정할 때 데이터 유형에 대한 나의 선택 중 하나가 아닙니다.LabVIEW에서 DLL과 복소수를 교환하십시오

불행히도 C/C++을 사용하지 못하므로 코드를 수정하여 실제 복식 만 반환하는 방법에 대해 알지 못합니다. MATLAB과 함께 사용하기 위해 코드를 MEX 파일로 컴파일하고 복잡한 숫자를 안팎으로 전달하므로 코드가 작동한다는 것을 알고 있습니다.

DLL 함수에서 복소수를 전달하도록 LabVIEW 2009를 속일 수 있습니까? 그렇지 않은 경우 최신 릴리스로 업그레이드하면이 기능을 사용할 수 있습니까? 그렇지 않다면, C++에 대한 좋은 기본 가이드가 있습니다.이 가이드는 함수를 수정하여 실수와 허수분을 별도의 벡터로 반환하는 방법을 가르쳐 줄 것입니다.

답변

2

LabVIEW는 C++ 코드와의 인터페이스를 허용하지 않으며 C 만 (또는 C++ 인 경우 extern "C" 선언이 있어야하며 일반 오래된 유형을 사용해야합니다).

라이브러리에 C 래퍼가 있지만 LabVIEW가 이해하지 못하는 새로운 C99 유형을 사용하고 있습니다.

그러나 LabVIEW는 함수에 복잡한 데이터 유형을 전달하여 "DLL 호출"예제를 열고 복잡한 데이터 유형을 선택하여 함수 프로토 타입과 VI를 볼 수 있습니다. C99 complex이 LabVIEW와 동일한 이진 표현을 가질 가능성이 있습니다. 나는 그 정보를 파헤 치지 않았지만 아주 가능할 수도 있습니다.

그럴 경우 교회에 가서 주님 께 감사하고 C 래퍼를 사용하여 인터페이스하십시오.

그렇지 않은 경우 컴파일러 용 DLL을 만드는 방법에 대한 자습서를 찾아보십시오. 어렵지 않지만 시간이 오래 걸립니다. DLL은 각 컴플렉스에 대해 두 개의 double을 취해서 실제 함수를 적절하게 호출합니다.

+0

좋은 답변입니다. Labview에서 호출되는 C/C++ FFT 코드 1 톤을 작성했습니다. 래퍼는 복소수를 뒤범벅 할 때 사용할 수있는 방법입니다. – Austin

관련 문제