Tôi chỉ đang cố gắng thực hiện một số giao diện được quản lý/không được quản lý. Để có được thông tin mở rộng lỗi tôi quyết định đăng ký một callback log được cung cấp bởi các dll: công trìnhC# P/Gọi: Varargs ủy nhiệm gọi lại
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public unsafe delegate void LogCallback(void* arg1,int level,byte* fmt);
Định nghĩa này, nhưng tôi nhận được chuỗi như "Format% s dò với size =% d và điểm số =% d". Tôi đã cố gắng thêm từ khóa __arglist, nhưng nó không được phép cho các đại biểu.
Vâng, nó không phải là quá ấn tượng đối với tôi, nhưng tôi chỉ tò mò wether người ta có thể nhận được các thông số varargs trong C#. Tôi biết rằng tôi có thể sử dụng c + + cho interop. Vì vậy: Có cách nào để làm điều này hoàn toàn trong C#, với hiệu quả hợp lý không?
EDIT: Đối với những người vẫn không nhận được nó: Tôi KHÔNG NHẬP KHẨU một hàm varargs NHƯNG KHẨU nó như là một callback, sau đó được gọi là mã nguồn gốc của tôi. Mỗi lần tôi chỉ có thể chỉ định một lần -> chỉ một quá tải có thể và __arglist KHÔNG hoạt động.
[This] (http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/301588-how-hooking-functions-wow- variable-arguments-c.html) có thể hữu ích. – IllidanS4