DLL-팁

DLL을 작성하는 동안 다음 팁을 염두에 두십시오.

  • 적절한 호출 규칙 (C 또는 stdcall)을 사용하십시오.

  • 함수에 전달 된 인수의 올바른 순서를 알고 있어야합니다.

  • 함수에 직접 전달 된 인수를 사용하여 배열의 크기를 조정하거나 문자열을 연결하지 마십시오. 전달하는 매개 변수는 LabVIEW 데이터라는 것을 기억하십시오. 배열 또는 문자열 크기를 변경하면 LabVIEW 메모리에 저장된 다른 데이터를 덮어 쓰면 충돌이 발생할 수 있습니다. LabVIEW Array Handle 또는 LabVIEW String Handle을 전달하고 Visual C ++ 컴파일러 또는 Symantec 컴파일러를 사용하여 DLL을 컴파일하는 경우 배열의 크기를 조정하거나 문자열을 연결할 수 있습니다.

  • 함수에 문자열을 전달하는 동안 전달할 올바른 유형의 문자열을 선택하십시오. C 또는 Pascal 또는 LabVIEW 문자열 핸들.

  • 파스칼 문자열의 길이는 255 자로 제한됩니다.

  • C 문자열은 NULL로 종료됩니다. DLL 함수가 이진 문자열 형식으로 숫자 데이터를 반환하는 경우 (예 : GPIB 또는 직렬 포트를 통해) 데이터 문자열의 일부로 NULL 값을 반환 할 수 있습니다. 이러한 경우 짧은 (8 비트) 정수 배열을 전달하는 것이 가장 안정적입니다.

  • 데이터의 배열 또는 문자열로 작업하는 경우, LabVIEW 핸들로 전달하지 않는 한 항상 함수에 의해 버퍼에 배치 된 결과를 보유 할만큼 충분히 큰 버퍼 또는 배열을 전달합니다.이 경우 CIN을 사용하여 크기를 조정할 수 있습니다. Visual C ++ 또는 Symantec 컴파일러의 함수.

  • _stdcall을 사용하는 경우 모듈 정의 파일의 EXPORTS 섹션에 DLL 함수를 나열하십시오.

  • 모듈 정의 파일 EXPORTS 섹션에서 다른 응용 프로그램이 호출하는 DLL 함수를 나열하거나 함수 선언에 _declspec (dllexport) 키워드를 포함합니다.

  • C ++ 컴파일러를 사용하는 경우 헤더 파일에서 extern .C. {} 문을 사용하여 함수를 내 보내어 이름 변경을 방지합니다.

  • 고유 한 DLL을 작성하는 경우 다른 응용 프로그램에서 DLL을 메모리로로드하는 동안 DLL을 다시 컴파일해서는 안됩니다. DLL을 다시 컴파일하기 전에 특정 DLL을 사용하는 모든 응용 프로그램이 메모리에서 언로드되었는지 확인하십시오. DLL 자체가 메모리에로드되지 않도록합니다. 이것을 잊어 버리고 컴파일러가 경고하지 않으면 올바르게 다시 빌드하지 못할 수 있습니다.

  • 다른 프로그램으로 DLL을 테스트하여 함수 (및 DLL)가 올바르게 작동하는지 확인합니다. 컴파일러의 디버거 또는 DLL에서 함수를 호출 할 수있는 간단한 C 프로그램을 사용하여 테스트하면 가능한 문제가 DLL에 내재되어 있는지 또는 LabVIEW 관련인지 식별하는 데 도움이됩니다.