Tôi có một ứng dụng và một số plugin trong các tệp DLL. Các plugin sử dụng các biểu tượng từ ứng dụng thông qua thư viện xuất. Các ứng dụng liên kết trong một số thư viện tĩnh và đây là nơi mà hầu hết các biểu tượng đến từ. Điều này làm việc tốt miễn là ứng dụng sử dụng một biểu tượng. Nếu biểu tượng không được sử dụng ở đó, tôi nhận được các lỗi liên kết khi biên dịch DLL.Bắt buộc xuất biểu tượng bằng MSVC
Làm cách nào để bắt buộc xuất biểu tượng chỉ được sử dụng trong plugin?
Để kích hoạt việc xuất khẩu Tôi đã thử một cái gì đó như thế này:
class MyClassExporter
{
MyClass mInstance;
public:
MyClassExporter() {}
};
static MyClassExporter TheMyClassExporter;
tại một trong những libs tĩnh ứng dụng được làm bằng để buộc xuất khẩu, mà không làm việc.
Để trả lời cho Greg (cảm ơn câu trả lời) và để làm rõ: Lớp tôi muốn ép xuất là MyClass (có __declspec (...) được xác định, tùy thuộc vào thời điểm tôi muốn xuất hoặc nhập) . MyClassExport là nỗ lực của tôi để buộc việc đưa vào các biểu tượng không được sử dụng (về mặt ứng dụng) vào ứng dụng. Tôi muốn 'chạm' các biểu tượng để người liên kết nhận ra chúng như được sử dụng và đưa chúng vào ứng dụng để nó có thể lần lượt xuất chúng sang các plugin của tôi. Liên kết các libs tĩnh vào các plugins không phải là một tùy chọn, vì chúng chứa các singletons sẽ được nhân đôi (mỗi ứng dụng và DLL có bản sao riêng của các biến tĩnh).
Tôi cần nhập từ libs tĩnh và xuất sang các plugin vì tôi có các phần tử đơn trong đó sẽ bị trùng lặp nếu tôi liên kết chúng vào tệp DLL (DLL và ứng dụng có biến tĩnh riêng). Câu đầu tiên của bạn giải thích vấn đề: Tôi đang tìm một cách để ép buộc sự bao gồm. – torque