DLL - Mẹo
Hãy ghi nhớ các mẹo sau khi viết DLL -
Sử dụng quy ước gọi phù hợp (C hoặc stdcall).
Hãy lưu ý về thứ tự chính xác của các đối số được truyền vào hàm.
KHÔNG BAO GIỜ thay đổi kích thước mảng hoặc nối các chuỗi bằng cách sử dụng các đối số được truyền trực tiếp cho một hàm. Hãy nhớ rằng, các tham số bạn truyền là dữ liệu LabVIEW. Việc thay đổi kích thước mảng hoặc chuỗi có thể dẫn đến sự cố do ghi đè dữ liệu khác được lưu trữ trong bộ nhớ LabVIEW. Bạn CÓ THỂ thay đổi kích thước mảng hoặc nối chuỗi nếu bạn vượt qua Trình xử lý Mảng LabVIEW hoặc Xử lý Chuỗi LabVIEW và đang sử dụng trình biên dịch Visual C ++ hoặc trình biên dịch Symantec để biên dịch DLL của bạn.
Trong khi chuyển chuỗi cho một hàm, hãy chọn đúng loại chuỗi để chuyển. C hoặc Pascal hoặc chuỗi LabVIEW Xử lý.
Chuỗi Pascal được giới hạn độ dài 255 ký tự.
C chuỗi được kết thúc NULL. Nếu hàm DLL của bạn trả về dữ liệu số ở định dạng chuỗi nhị phân (ví dụ: qua GPIB hoặc cổng nối tiếp), hàm này có thể trả về giá trị NULL như một phần của chuỗi dữ liệu. Trong những trường hợp như vậy, việc chuyển các mảng số nguyên ngắn (8-bit) là đáng tin cậy nhất.
Nếu bạn đang làm việc với mảng hoặc chuỗi dữ liệu, LUÔN LUÔN chuyển một bộ đệm hoặc mảng đủ lớn để chứa bất kỳ kết quả nào được đặt trong bộ đệm bởi hàm trừ khi bạn chuyển chúng dưới dạng xử lý LabVIEW, trong trường hợp đó, bạn có thể thay đổi kích thước chúng bằng CIN các chức năng trong trình biên dịch Visual C ++ hoặc Symantec.
Liệt kê các hàm DLL trong phần EXPORTS của tệp định nghĩa mô-đun nếu bạn đang sử dụng _stdcall.
Liệt kê các hàm DLL mà các ứng dụng khác gọi trong phần EXPORTS tệp định nghĩa mô-đun hoặc để bao gồm từ khóa _declspec (dllexport) trong khai báo hàm.
Nếu bạn sử dụng trình biên dịch C ++, hãy xuất các hàm với câu lệnh extern .C. {} Trong tệp tiêu đề của bạn để ngăn việc sai tên.
Nếu bạn đang viết DLL của riêng mình, bạn không nên biên dịch lại DLL trong khi DLL được tải vào bộ nhớ bởi ứng dụng khác. Trước khi biên dịch lại DLL, hãy đảm bảo rằng tất cả các ứng dụng sử dụng DLL cụ thể đó đều được dỡ bỏ khỏi bộ nhớ. Nó đảm bảo rằng bản thân DLL không được tải vào bộ nhớ. Bạn có thể không xây dựng lại chính xác nếu bạn quên điều này và trình biên dịch của bạn không cảnh báo bạn.
Kiểm tra các tệp DLL của bạn bằng một chương trình khác để đảm bảo rằng chức năng (và DLL) hoạt động chính xác. Kiểm tra nó bằng trình gỡ lỗi của trình biên dịch của bạn hoặc một chương trình C đơn giản mà bạn có thể gọi một hàm trong DLL sẽ giúp bạn xác định xem liệu những khó khăn có thể xảy ra có liên quan đến DLL hoặc LabVIEW hay không.