[Wiki dll c++] DLL - Mẹo
Giữ những lời khuyên sau đây trong tâm trí trong khi viết một DLL -
-
Sử dụng đúng quy ước gọi (C hoặc stdcall).
-
Hãy nhận thức được đúng thứ tự của các đối số truyền vào cho hàm.
-
KHÔNG BAO GIỜ thay đổi kích thước các mảng hoặc nối chuỗi bằng cách sử dụng các đối số được truyền trực tiếp đến một function. Hãy nhớ rằng, các thông số bạn vượt qua những dữ liệu LabVIEW. Thay đổi các kích cỡ của mảng hoặc chuỗi có thể dẫn đến một việc crash bằng cách ghi đè dữ liệu được lưu trữ khác trong bộ nhớ LabVIEW. Bạn CÓ THỂ thay đổi kích thước các mảng hoặc ghép các chuỗi nếu bạn vượt qua việc sửa chữa LabVIEW mảng hoặc LabVIEW chuỗi và sử dụng các trình biên dịch C ++ trực quan hoặc trình biên dịch Symantec để biên dịch DLL của bạn.
-
While passing strings to a function, select the correct type of string to pass.
(trong khi truyền 1 chuỗi cho 1 function, hãy chọn đúng kiểu của chuỗi truyền vào) -
Chuỗi Pascal được giới hạn 255 ký tự.
-
Chuỗi C được NULL chấm dứt. Nếu hàm DLL của bạn trả về dữ liệu số trong một chuỗi định dạng nhị phân (ví dụ, thông qua GPIB hoặc cổng nối tiếp), nó có thể trở về giá trị NULL như một phần của chuỗi dữ liệu. Trong trường hợp như vậy, đi qua các chuỗi ngắn (8-bit) kiểu nguyên là đáng tin cậy nhất.
-
Nếu bạn đang làm việc với các mảng hoặc các chuỗi dữ liệu, luôn luôn cấp phát thừa bộ nhớ đệm hoặc mảng cho đó, chắc chắn rằng nó đủ lớn để chứa bất kỳ kết quả được trả về đặt trong bộ nhớ đệm của các function, trừ khi bạn đang vượt giới hạn của chúng như LabVIEW xử lý, trong trường hợp này bạn có thể thay đổi kích thước bằng cách sử dụng CIN function theo Visual C ++ hoặc trình biên dịch Symantec.
-
Danh sách chức năng DLL trong phần export của các tập tin định nghĩa module nếu bạn đang sử dụng _stdcall.
-
Danh sách chức năng DLL mà các ứng dụng khác gọi trong phần file exporrt định nghĩa module hoặc để bao gồm các từ khóa _declspec (dllexport) trong phần khai báo hàm.
-
Nếu bạn sử dụng một trình biên dịch C ++, các export function với câu lệnh .C extern {} . trong file header (.h) của bạn sẽ được dùng để nhằm ngăn chặn tên mangling.
-
Nếu bạn đang viết DLL của riêng bạn, bạn không cần biên dịch lại một DLL trong khi các DLL được nạp vào bộ nhớ của một ứng dụng khác. Trước khi biên dịch lại một DLL, đảm bảo rằng tất cả các ứng dụng sử dụng DLL cụ thể đã được dỡ khỏi bộ nhớ. Nó đảm bảo rằng các DLL cũ không được nạp vào bộ nhớ. Bạn có thể thất bại khi xây dựng lại một cách 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 file DLL của bạn với chương trình khác để đảm bảo rằng các chức năng (và các DLL) hoạt động một cách chính xác. Thử nghiệm nó với các trình gỡ lỗi của trình biên dịch của bạn hay một chương trình C đơn giản mà bạn có thể gọi một hàm trong một DLL sẽ giúp bạn xác định xem liệu có thể là khó khăn cố hữu để DLL hoặc bởi các lỗi LabVIEW liên quan.