PDA

View Full Version : سوال: چطوری entry point یک dll 32 بیتی در برنامه 64 بیتی اجرا کنم؟



kooroshekabir
جمعه 23 تیر 1396, 19:50 عصر
سلام دوستان
من یک محیط فرم ساز دارم که داخلش میشه با زبان #C برنامه نویسی کرد و میشه dll یک سری دستگاه رو داخلش import کرد و از اون دستگاه استفاده کرد.
من برای اتصال دستگاه حضور و غیاب فایل های DLL دستگاه رو دارم و یک نمونه کد #c برای اتصال به دستگاه.
وقتی فایل هارو داخل فرم سازم درج میکنم به من پیغام خطایی رو میده که نمیتونه فایل هارو بخونه
وقتی تو گوگل جستجو کردم فهمیدم فایل های DLL من 32 بیتی هستش و باید در فایل regsvr32 ثبتش کنم
ولی بعد از اجرای دستور بالا به من این پیغام رو میده که entry point یافت نشد یا اصلا فایلی که بهش معرفی میشه dll یا ocx نیست
وقتی نمونه کدی که شرکت سازنده دستگاه بهم داده بود نگاه کردم دیدم علاوه بر پوشه ای که dll هارو معرفی کرده یک سری entry point هم به صورت دستی درج شده
دقیقا نمیدونم این قسمت از برنامه چه عملیاتی انجام میده و چطور این اتفاق میفته که داخل نمونه کد خودش فایل های dll خونده میشه و به دستگاه متصل میشه ولی در فرم ساز من حتی امکان خوندن این فایل ها نیست.نمونه کد خود شرکت سازنده دستگاه رو میزارم اینجا
اگر کسی بتونه توضیح بده که دقیقا چه اتفاقی می افته داخل این فایل cs ممنون میشم.
فایل C#‎‎ به همراه dll داخل پیوست هستش


[/CSHARP]145762

kooroshekabir
یک شنبه 25 تیر 1396, 06:59 صبح
یعنی یک نفر پیدا نمیشه این فایل هارو نگاه کنه و یاد داشته باشه؟

ASKaffash
دوشنبه 26 تیر 1396, 06:55 صبح
سلام
احتمال خیلی زیاد دو نسخه dll ارائه شده دارای متدهای کاملا" مشابه هستند شما نمی توانید یک dll 32 بیتی را برای یک سیستم 64 بیتی بکار برید شما فقط این موضوعات را رعایت کنید :
- نسخه برنامه #C شما Any Cpu باشد
- هنگام نصب برنامه در مقصد متناسب با 32 یا 64 بیتی بودن مقصد dll مربوطه در فولدر برنامه نصب باشد
خواهید دید که برنامه بدون مشکلی کار خواهد کرد

kooroshekabir
سه شنبه 27 تیر 1396, 00:31 صبح
سلام
احتمال خیلی زیاد دو نسخه dll ارائه شده دارای متدهای کاملا" مشابه هستند شما نمی توانید یک dll 32 بیتی را برای یک سیستم 64 بیتی بکار برید شما فقط این موضوعات را رعایت کنید :
- نسخه برنامه #C شما Any Cpu باشد
- هنگام نصب برنامه در مقصد متناسب با 32 یا 64 بیتی بودن مقصد dll مربوطه در فولدر برنامه نصب باشد
خواهید دید که برنامه بدون مشکلی کار خواهد کرد

سلام شما فایل c# که تو پیوست گذاشتم رو نگاه کردید؟
ممنون میشم اگر نگاه کنید و بهم بگید این فایل چه کاری انجام میده

ASKaffash
چهارشنبه 28 تیر 1396, 06:28 صبح
سلام
نگاه کردم فقط متدهای درون dll را معرفی کرده و تعدادی Struct و const معرفی شده هیچ مثال کاربردی در سورس شما نیست

negative60
چهارشنبه 28 تیر 1396, 12:30 عصر
سلام دوستان
من یک محیط فرم ساز دارم که داخلش میشه با زبان #C برنامه نویسی کرد و میشه dll یک سری دستگاه رو داخلش import کرد و از اون دستگاه استفاده کرد.
من برای اتصال دستگاه حضور و غیاب فایل های DLL دستگاه رو دارم و یک نمونه کد #c برای اتصال به دستگاه.
وقتی فایل هارو داخل فرم سازم درج میکنم به من پیغام خطایی رو میده که نمیتونه فایل هارو بخونه
وقتی تو گوگل جستجو کردم فهمیدم فایل های DLL من 32 بیتی هستش و باید در فایل regsvr32 ثبتش کنم
ولی بعد از اجرای دستور بالا به من این پیغام رو میده که entry point یافت نشد یا اصلا فایلی که بهش معرفی میشه dll یا ocx نیست
وقتی نمونه کدی که شرکت سازنده دستگاه بهم داده بود نگاه کردم دیدم علاوه بر پوشه ای که dll هارو معرفی کرده یک سری entry point هم به صورت دستی درج شده
دقیقا نمیدونم این قسمت از برنامه چه عملیاتی انجام میده و چطور این اتفاق میفته که داخل نمونه کد خودش فایل های dll خونده میشه و به دستگاه متصل میشه ولی در فرم ساز من حتی امکان خوندن این فایل ها نیست.نمونه کد خود شرکت سازنده دستگاه رو میزارم اینجا
اگر کسی بتونه توضیح بده که دقیقا چه اتفاقی می افته داخل این فایل cs ممنون میشم.
فایل C#‎‎‎ به همراه dll داخل پیوست هستش

[/CSHARP]145762

این فایل کامپوننت یا اکتیویکس نیست و نیاز به رجیستر شدن یا اضافه شدن به ویژوال استادیو رو نداره!
این dll بومی ویندوز هست و توابع مورد نیاز برای کار با دستگاه رو در اختیارتون میذاره فقط زمان اجرای برنامتون این فایل dll می‌بایست در کنارش وجود داشته باشه, طریقه استفاده از توابع این کتابخونه هم شبیه به استفاده از API‌ های ویندوز هست

kooroshekabir
جمعه 30 تیر 1396, 20:04 عصر
این فایل کامپوننت یا اکتیویکس نیست و نیاز به رجیستر شدن یا اضافه شدن به ویژوال استادیو رو نداره!
این dll بومی ویندوز هست و توابع مورد نیاز برای کار با دستگاه رو در اختیارتون میذاره فقط زمان اجرای برنامتون این فایل dll می‌بایست در کنارش وجود داشته باشه, طریقه استفاده از توابع این کتابخونه هم شبیه به استفاده از API‌ های ویندوز هست

فرم سازی که من استفاده میکنم برپایه 64 بیت ساخته شده.موقعی که فایل رو داخل محیط برنامه نویسیش import میکنم به من پیغام میده که نمیتونه این فایل رو باز کنه یا بخونه
در کل دیدی ندارم نسبت به این که این خطا مربوط به 32 ببیت و یا 64 بیت باشه و لطفا خارج از این مقوله اگر نظری دارید ممنون میشم راهنماییم کنید که اصلا میشه این فایل رو استفاده کرد یا نه
البته در نمونه پروژه سی شارپی که خود شرکت کره ای ارسال کرده پروژه اجرا میشه و از دستگاه اطلاعات رو استخراج میکنم ولی داخل فرم سازم این امکان وجود نمیتونم
این آدرس فایل پروژه کامل برنامه هستش اگر وقت کنید و بررسیش کنید ممنون میشم فایل پروژه (http://bapiano.ir/BS_SDK_CD_V1.8.zip)