Tôi đang trong quá trình chuyển một ứng dụng C++ lớn từ Linux (gcc) sang Windows (Visual C++ 2008) và đang gặp sự cố liên kết với các plugin. Trên Linux, đây không phải là vấn đề vì nó hỗ trợ tra cứu biểu tượng thời gian chạy, nhưng dll dường như không hỗ trợ điều này.Visual C++ - Liên kết plugin DLL với EXE?
Ứng dụng (máy chủ), lưu trữ môi trường kịch bản, cung cấp giao diện cho plugin mà không biên dịch lại ứng dụng máy chủ. Trên Linux, đây chỉ là vấn đề bao gồm tiêu đề của ứng dụng máy chủ trong nguồn plugin, nhưng trên Windows, tôi nhận được lỗi trình liên kết. Tôi không chắc chắn chính xác những gì tôi cần phải liên kết với Visual C++ để giải quyết những biểu tượng này.
Một trong những phụ thuộc của chúng tôi (mã nguồn mở, LGPL) có các khai báo tiền xử lý mà nó sử dụng để chèn __declspec (dllexport) và __declspec (dllimport) vào các tiêu đề của nó. Một số nghiên cứu trước đây chỉ ra rằng tôi có thể phải làm điều này là tốt, nhưng tôi muốn chắc chắn trước khi tôi sửa đổi một loạt các tiêu đề cốt lõi. (Trước đây tôi có thể làm việc này trên MinGW, nhưng chúng tôi đã quyết định hỗ trợ Visual Studio là một yêu cầu đối với loại dự án thương mại này.)
Câu hỏi của tôi, tóm lại: Làm cách nào để liên kết thời gian chạy- nạp dlls chống lại một exe máy chủ trong Visual C++?
Chỉnh sửa: Để làm rõ vấn đề với ví dụ, tôi có một lớp trong ứng dụng máy chủ của mình, Đối tượng, thể hiện loại cơ sở của đối tượng có thể được truy cập bằng tập lệnh. Trong các plugin của tôi, tôi có một số lớp mở rộng Đối tượng để thực hiện các chức năng khác, chẳng hạn như tích hợp hỗ trợ mạng hoặc các yếu tố hình ảnh mới. Điều này có nghĩa rằng dll của tôi phải liên kết với các biểu tượng trong exe máy chủ, và tôi không chắc chắn làm thế nào để làm điều đó.
Tôi đang gặp một chút rắc rối khi quấn đầu quanh việc này. Nếu bạn có một ví dụ cụ thể và đơn giản hóa nó thành một vài dòng mã có thể giúp mọi người giúp bạn. – ojblass