استفاده از ماژول جداگانه در vb.6

سلام پیشاپیش عید همه تون مبارک باشه و تبریک ویژه برای علی اقا
می خوام یه کاری کنم اونم این هست که از محتویات یک ماژول bas در یه برنامه اگزه کامپایل شده استفاده کنم.ماژولمون خامه یعنی کامپایل نشده فقط توش یک تابع پابلیک نوشتم.حالا میخوام توبرنامم اگه شرطی برقرار شد تابع موجود در ماژول جداگانه خارج از برنامه رو استفاده یا فراخوانی کنم:rose:
 

the_king

مدیرکل انجمن
سلام پیشاپیش عید همه تون مبارک باشه و تبریک ویژه برای علی اقا
می خوام یه کاری کنم اونم این هست که از محتویات یک ماژول bas در یه برنامه اگزه کامپایل شده استفاده کنم.ماژولمون خامه یعنی کامپایل نشده فقط توش یک تابع پابلیک نوشتم.حالا میخوام توبرنامم اگه شرطی برقرار شد تابع موجود در ماژول جداگانه خارج از برنامه رو استفاده یا فراخوانی کنم:rose:

اینکار احتیاج به یک مفسر کامل و تمام عیار زبان داره، تا اونجایی که اطلاع دارم برای Visual Basic 6 کمپوننت مفسر ای وجود نداره که فایل bas بهش بدهید و اجرا کنه.
صرفا می توانید یک سطر کد رو به شکلی محدود برای محاسبه یک عبارت ریاضی-منطقی بکار ببرید :

راهکار برای زبانی دیگر !
 
خیلی ممنون.نتیجه این میشه که نمیشه.پس یه سوال دیگه برای حل مشکلم.چه طوری یه ماژول رو به dll تبدیل کنم.البته سرچ زدم اما هیچ کس مثل شما ساده و با جزییات نمیگه.تازه اصلا انگلیسی تخصصی نمیفهمم متاسفانه.کاش فایل ویدیویی بود

http://www.hermetic.ch/vbm2dll.htm
http://barnamenevis.org/showthread....-دوستان-عزیز&p=1140507&viewfull=1#post1140507
http://www.iranled.com/forum/thread-5833.html
 

the_king

مدیرکل انجمن
خیلی ممنون.نتیجه این میشه که نمیشه.پس یه سوال دیگه برای حل مشکلم.چه طوری یه ماژول رو به dll تبدیل کنم.البته سرچ زدم اما هیچ کس مثل شما ساده و با جزییات نمیگه.تازه اصلا انگلیسی تخصصی نمیفهمم متاسفانه.کاش فایل ویدیویی بود

http://www.hermetic.ch/vbm2dll.htm
http://barnamenevis.org/showthread....-دوستان-عزیز&p=1140507&viewfull=1#post1140507
http://www.iranled.com/forum/thread-5833.html

شما می خواهید کارهای تخصصی رو به روش ابتدایی انجام بدهید که عملی نیست.
ویژوال بیسیک بصورت عادی هم DLL های ActiveX می سازه، اما مهم اینه که DLL کجا و چطور استفاده بشه. DLL هایی که ویژوال بیسیک بصورت عادی می سازه
کتابخانه و کنترل های ActiveX اند، برای خود ویژوال بیسیک و سایر زبان هایی که از ActiveX پشتیبانی می کنند هم قابل استفاده است.
اما با کمی تغییرات در روال Linker ویژوال بیسیک می تواند کتابخانه های DLL با توابع stdcall بسازد. این کتابخانه ها صرفا در زبان هایی قابل استفاده است
که از stdcall پشتیبانی می کنند، مثلا خود ویژوال بیسیک.

این فایل رو دانلود کنید :
مشاهده پیوست Create_Sta175398652004.zip
در یک محل فایل رو از حالت فشرده خارج کنید.
پروژه Linker.vbp رو در پوشه linker باز کرده و کامپایل کنید و فایل MakeDLL.exe رو بسازید (Make کنید)
فایل MakeDLL.exe رو در پوشه Visual Basic کپی کنید، در مسیری مثل این :
کد:
C:\Program Files (x86)\Microsoft Visual Studio\VB98
پروژه MakeDLLAddin.vbp رو در پوشه addin باز کرده و کامپایل کنید و فایل MakeDLL.DLL رو بسازید (Make کنید)
MakeDLL.DLL رو هم در پوشه Visual Basic کپی کنید.
محتویات پوشه dll project رو در پوشه Project Templates ویژوال بیسیک کپی کنید. در مسیری مثل این :
کد:
C:\Program Files (x86)\Microsoft Visual Studio\VB98\template\projects
ویژوال بیسیک رو ببندید و مجددا اجرا کنید.
در منوی Add-Ins گزینه ...Add-Ins Manager رو انتخاب کنید. Create DLLs In Visual Basic را در آن انتخاب کرده و دو گزینه Loaded و Load On Startup را تیک بزنید.
حالا موقع ساختن یک پروژه جدید نوع پروژه Standard DLL اضافه شده. برای انتخاب توابعی که باید از DLL به بیرون Export شوند در منوی File
گزینه Choose DLL Exports اضافه شده.
موقع Make کردن پسوند پیشفرض exe است، اما خودتان به dll تغییر اش دهید.
در پوشه test dll نمونه پروژه ساختن فایل dll هست.
در پوشه test program نمونه پروژه استفاده از فایل dll هست.

Create Standard DLLs in Visual Basic v2 - make your own api
 
به اروربر خوردم.دیدم ارور میده گفتم از رفرنس دی الل رو اضافه کنم تست کنم که بازم ارور داد.

:-?
در ضمن علی اقا واقعا نمیدونم چه طوری ازتون تشکر کنم که کمک میکنید واقعا خودم نمیتونم از پس اینا بر بیام.یاشاین
 

پیوست ها

  • 2016-03-15_5-22-53.rar
    1.1 مگایابت · بازدیدها: 2
  • 2016-03-15_5-58-33.mp4
    294.7 کیلوبایت · بازدیدها: 11
آخرین ویرایش:

the_king

مدیرکل انجمن
به اروربر خوردم.دیدم ارور میده گفتم از رفرنس دی الل رو اضافه کنم تست کنم که بازم ارور داد.

:-?
در ضمن علی اقا واقعا نمیدونم چه طوری ازتون تشکر کنم که کمک میکنید واقعا خودم نمیتونم از پس اینا بر بیام.یاشاین

چرا References ؟ پروژه مثال test program رو ببینید، فایل DLL ای که صرفا چند تا تابع stdcall داره رو با References پیوند نمی زنند.
کتابخانه شما Type Library نداره و اطلاعاتی داخلش نیست که Reference بشه.
شما باید اسم و پارامتر های تابع یا توابع تون رو با Declare تعریف کنید.

کد:
Private Declare Function subtraction Lib "testDLL.DLL" (ByVal A As Double, ByVal B As Double) As Double
Private Declare Function addition Lib "testDLL.DLL" (ByVal A As Double, ByVal B As Double) As Double
 
دقیقا منم نمیخوام از رفرنس اضافه کنم چون ارور داد اونجوری کردم.فیلم مراحل روپیوست کردم.واقعا نمیدونم مشکل چیه.ببخشید شما روهم مجبور کردیم فیلم نگاه کنین:sad:
 

پیوست ها

  • 2016-03-15_10-09-29.rar
    4.9 مگایابت · بازدیدها: 70

the_king

مدیرکل انجمن
دقیقا منم نمیخوام از رفرنس اضافه کنم چون ارور داد اونجوری کردم.فیلم مراحل روپیوست کردم.واقعا نمیدونم مشکل چیه.ببخشید شما روهم مجبور کردیم فیلم نگاه کنین:sad:

مراحل کامپایل و تنظیم ویژوال بیسیک رو انجام دادید. اما اسم فایل dll ای که ساخته اید TestDLL2.dll ئه، یا در TestProg.exe جایی که Declare کرده اید "testDLL.DLL" رو به "testDLL2.DLL" تغییر بدهید، یا اسم فایل TestDLL2.dll رو به TestDLL.dll تغییر بدهید :

مشاهده پیوست compiled.zip
 
خیلی اشتباهات بچه گانه ای دارم.انشالاه هر چی سال نوارزو کنین.براتون اتفاق بیافته .برفه سال نو هم مبارکا باشه:rose:
 

جدیدترین ارسال ها

بالا