Tôi có lệnh c++filt
để hủy bỏ một biểu tượng, công cụ để làm ngược lại và mangle một tên biểu tượng là gì?Tiện ích Linux để mangle một tên biểu tượng C++ là gì?
Điều này sẽ hữu ích nếu tôi muốn gọi dlsym()
trên tên chức năng C++ bị xé. Tôi không muốn mã cứng tên mangling trong mã kể từ khi nó có thể thay đổi theo thời gian do phiên bản mới complier hoặc thương hiệu trình biên dịch mới đang được sử dụng hoặc hiện tại do biên dịch cho nhiều nền tảng.
Có cách nào có lập trình để lấy chuỗi đại diện cho hàm C++ khi chạy để mã độc lập không? Một cách để có thể làm điều này là gọi một tiện ích tại thời gian biên dịch thực hiện tên mangling cho trình biên dịch đang được sử dụng và chèn tên biểu tượng C++ xâu thích hợp vào một chuỗi cho dlsym()
để sử dụng.
Here is the closest to a solution I've found on this site được thực hiện bằng cách sử dụng tên kiểu C cố định để gián tiếp tới biểu tượng C++ được xác định trong thư viện bạn muốn dlsym()
, nhưng nếu bạn không có quyền kiểm soát thư viện đó cung cấp thì đây không phải là tùy chọn.
Mọi người đều sử dụng trình biên dịch C++ cho tên mangle. –
Làm thế nào về, uh, trình biên dịch? –
-1, trình biên dịch là thứ duy nhất bạn cần ... và đó là câu trả lời khá rõ ràng. – Griwes