سلام
ولی تو نوشتن فایل هدر که بتونه توابع رو export کنه، دچار مشکل شدم، یعنی یه فایل از نوع text به پروژه ی مربوط به برنامه dll (فایل myputs ) اضافه کردم و تابع myputs رو توش اعلان کردم و ...
بعد از این کار که برنامه ی dll رو اجرا کردم، 2 تا ارور لینک داد، خودم فکر می کنم فایل هدرش رو اشتباه نوشتم!
فایل هدر برای تعریف توابع است نه برای export کردن توابع برایexport کردن یا باید توابع مربوطه رو در یک
DEF. فایل قرار داد مثل نمونه هایی که قبلا خودتون گزاشته بودین یا اینکه قبل توابع مربوطه این دستور رو قرار داد
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثل نمونه dll که شما سورسش رو قرار دادین یعنی این
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه ممکنه کدهای مربوط به یه فایل هدر که بتونه این برنامه ها رو اجرا کنه، اینجا بذارید که بشه dll و lib رو ساخت و تو دو تا برنامه load-time و run-time ازش استفاده کرد!
شما همین سورس dll ای که قرار دادین بدون هیچ فایل اضافه ای کامپایل کنید فایل dll و lib ساخته میشن
و برای ساختن یه هدر فایل کافیه یه فایل h. بسازین و این دستور رو توش قرار بدین این برای load-time
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و این برای run-time:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه موفق به اجرای برنامه ها شدین،لطفا بفرمایین خروجی برنامه چیه؟ (یعنی بعد از اجرا ، تو دو برنامه فراخوان در حالت load و run ،خروجی رو چی می بینیم؟)
بعد اجرا باید رشته ای که به عنوان پارامتر به تابع myPuts فرستاده شده در صفحه ی کنسول چاپ بشه
در ضمن با توجه به فرق بین فایل h. و def. ، باید کدوم یکی رو تولید کنیم؟
در مورد این سورسی که گزاشتین دیگه نیازی به def. فایل نیست چون تو خود سورس dll تعریف شدن
ولی میتونید فایل h. رو ایجاد کنید (البته اینم تو خوده برنامه ها تعریف شدن مگر اینکه بخواین از سورس برنامه جداش کنید)
یه سوال دیگه:
اگه من بخوام یه سری توابع به اون نمونه کد قالب csp اضافه کنم،(مثلا یه الگوریتم hash یا یه الگوریتم cryptography (رمزنگاری) به اون قالب های تابع cryptoAPI ای که در کد CSP موجوده (همون 23 تا تابع) اضافه کنم،آیا باید هدر فایل و فایل def اش رو هم تغییر بدم؟
این مورد رو بهتره در msdn پیدا کنیدشاید مجبور باشید این کارا رو بصورت جدا انجام بدین چون خودم کار نکردم نظری ندارم
اصلا قواعد و دستورات نوشتن یه هدر فایل برای فایل های dll چه جوریه(در این مورد اگه لینکی که هم دستورات رو توضیح داده باشه و هم چند نمونه مثال داشته باشه،معرفی کنین ممنون میشم)
قواعد خاصی نداره همون قواعدی هست که برای تعریف یک تابع استفاده مکینیم فقط همین تعاریف
رو تو یه فایل h. به صورت جداگانه قرار میدیم
همونطور که گفتم مثلا در نمونه سورسی که شما گزاشتین دیگه هدر فایلی نیست و تابع داخل خود سورس برنامه تعریف شده (منظورم همون سورس load-time و run-time هست)
شما همینو میتونین جداش کنید
- در مورد این دستور:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که برای مشاهده ی فایل های Export شده بود، من اینو تو محیط command کپی کردم و نتیجه اش این شد:
در ضمن برنامه ویژوال استودیوی من (برنامه Dumpbin.exe ) دردرایو C و ویندوز (یعنی در واقع Cmd.exe ) در درایو D قرار داره ،امکان نداره به خاطر متفاوت بودن درایوها این ارور رو بده یا اینکه اصلا فایل csp.dll باید کجا قرار داشته باشه؟
اینجور که از پیام معلومه فایل csp.dll رو پیدا نکرده فایل هر جایی میتونه باشه بهتره مسیر کامل فایل رو بدین،
بعد اجرای دستور باید همچین خروجی از csp.dll بگیرین
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
ببخشید یه سوال دیگه!
من تو کامپایل برنامه زیر دچار مشکل شدم:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این برنامه، کد الگوریتم AES (یه الگوریتم رمزنگاری در ویندوز) هستش،وقتی که اونو کامپایل می کنم،این سه تا ارور رو میده:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ضمن در برنامه، هدر فایل<bcrypt.h > رو هم به "bcrypt.h " تغییر دادم،ولی باز این سه تا ارور رو داد!
به نظرتون چی کار باید بکنم؟
ممنون
این پروژه با Visual Studio 2005 ایجاد شده اگه با این ورژن یا بالا تر کامپایل کنین دیگه این مشکلو ندارین من با 2008 انجام دادم و درست کامپایل شد
شاد باشید