Tôi đang viết một C/C++ DLL và muốn xuất một số chức năng mà tôi đã thực hiện trước khi sử dụng một file .def như thế nàychức năng quá tải trong C++ DLL def nộp
LIBRARY "MyLib"
EXPORTS
Foo
Bar
với mã định nghĩa là này, ví dụ:
int Foo(int a);
void Bar(int foo);
Tuy nhiên, những gì nếu tôi muốn tuyên bố một phương pháp quá tải của Foo() như:
int Foo(int a, int b);
khi d ef tập tin chỉ có tên chức năng và không phải là nguyên mẫu đầy đủ Tôi không thể xem làm thế nào nó sẽ xử lý các chức năng quá tải. Bạn chỉ cần sử dụng một mục nhập và sau đó chỉ định phiên bản quá tải nào bạn muốn khi chuyển vào con trỏ hàm mẫu chính xác tới LoadLibrary()?
Edit: Để được rõ ràng, đây là trên Windows sử dụng Visual Studio 2005
Edit: Bị Trầy phương pháp phi def (__declspec) là câu trả lời ... Tôi biết điều này không thực sự giải quyết vấn đề sử dụng def các tập tin như tôi muốn, nhưng có vẻ như là có khả năng không có (chính thức) giải pháp bằng cách sử dụng các tập tin def. Tuy nhiên, sẽ để câu hỏi mở, trong trường hợp ai đó biết điều gì đó mà chúng tôi không có chức năng quá tải và tệp bị lỗi.
nếu chúng ta sử dụng GetProcAddress() với một DLL động? – null
Sau đó, bạn cần sử dụng các tên bị xáo trộn, hoặc đổi tên một trong các hàm và làm cho chúng trở thành cả hai 'extern" C "', giả sử không có hoặc trả về các đối tượng C++. –