Có hai cách để tải chia sẻ đối tượng trong C++
Đối với một trong các phương pháp này bạn sẽ luôn luôn cần các tập tin tiêu đề cho đối tượng bạn muốn sử dụng. Tiêu đề sẽ chứa các định nghĩa của các lớp hoặc các đối tượng bạn muốn sử dụng trong mã của bạn.
Tĩnh:
#include "blah.h"
int main()
{
ClassFromBlah a;
a.DoSomething();
}
gcc yourfile.cpp -lblah
động (Trong Linux):
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
void *handle;
double (*cosine)(double);
char *error;
handle = dlopen ("libm.so", RTLD_LAZY);
if (!handle) {
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
dlerror(); /* Clear any existing error */
cosine = dlsym(handle, "cos");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%f\n", (*cosine)(2.0));
dlclose(handle);
return 0;
}
* bị đánh cắp từ dlopen Linux man page Quá trình này dưới cửa sổ hay bất kỳ nền tảng khác là như nhau, chỉ cần thay thế dlopen với các phiên bản nền tảng tìm kiếm biểu tượng động.
Để phương thức động hoạt động, tất cả các ký hiệu bạn muốn nhập/xuất phải có liên kết C bên ngoài.
Có một số từ Here về thời điểm sử dụng tĩnh và thời điểm sử dụng liên kết động.
Có thể bạn đã nhầm lẫn nhưng không giống như bạn có đủ thông tin ở đó. Ví dụ, blah.so chứa gì? Bạn chắc chắn bạn không chỉ nói về việc sử dụng một tài liệu tham khảo? – Goz
Bạn có ý nghĩa gì khi "chia sẻ" chính xác? – Klaim
Err ... vì vậy tệp không phải là tệp mã, phải không? Có thể bạn muốn lấy một đối tượng từ a.tệp (thư viện được chia sẻ) như vậy? – Klaim