using برای namespace ئه که کتابخانه های dll معمولی که به زبان های تحت NET. نوشته نشده اند و اطلاعات assembly ندارند کاربردی نداره.
من کی گفتم خالی ئه؟ اینکه dll اطلاعات توابع رو نداره به این معنا نیست که خالی ئه، وجود این اطلاعات داخل فایل کمک می کنه که کامپایلر پروتوتایپ توابع رو تشخیص بده.
قبلا عرض کردم، باز هم حرف ام تغییر نکرده و همونه، شما فقط فایل unrar.cs رو در پروژه تون بکار می برید، از add reference استفاده نمی کنید.
همونطور که قبلا با نمونه کد مثال زدم در اون فایل unrar.cs همچین سطر هایی هست که صفت DllImport داره و مشخص کرده که در فایل unrar.dll همچین متدی
با این مشخصات و انواع داده ای هست و وقتی این متد ها رو فراخوانی می کنید میره از داخل فایل dll که کنار فایل اجرایی پروژه تون یا در یک مسیر پیشفرض سیستم
مثل C:\Winows\System32 ئه فراخوانی و اجرا اش می کنه. در همه زبان ها بخواهید از یک فایل dll کتابخانه با توابع stdcall استفاده کنید همینطوره.
کد:
[DllImport("UNRAR.DLL")]
private static extern IntPtr RAROpenArchiveEx(ref RAROpenArchiveDataEx archiveData);
[DllImport("unrar.dll")]
private static extern int RARCloseArchive(IntPtr hArcData);
.
.
.
اینها تنها اطلاعاتی ئه که برای فراخوانی توابع dll کامپایلر بهشون احتیاج داره.
محتویات فایل Unrar.cs رو در پروژه تون در یک فایل جدید cs جایگزین کنید یا خود فایل رو منوی Project با Add Existing Item اضافه کنید، در صورت لزوم namespace اش که Schematrix هست رو به namespace ئه پروژه تون تغییر بدید که نیازی
به using Schematrix نباشه.
فایل unrar.dll رو هم در پروژه خودتون یا مستقیما در پوشه کنار فایل اجرایی کامپایل شده پروژه تون کپی کنید (کار اصولی ای نیست) و یا در منوی Project با Add Existing Item به پروژه اضافه کنید و بعد در پنجره Properties برای اون
فایل unrar.dll که به Solution Explorer اضافه شده، مشخصه Copy to Output Directory رو copy if newer کنید تا خودش موقع کامپایل پروژه بصورت خودکار کنار فایل اجرایی پروژه تون قرارش بده (کار اصولی اینه)