PDA

View Full Version : سوال: استفاده از Com Dll ها در MFC



(هیچکس)
سه شنبه 26 شهریور 1387, 09:25 صبح
سلام...!
من یه Dll با VB6 طراحی کردم. میخواستم ببینم که چه طوری می تونم از اون داخل یه برنامه MFC استفاده کنم.
ممنون.
موفق باشید...

Nima_NF
سه شنبه 26 شهریور 1387, 16:08 عصر
اگر dll های معمولی هستند می توانید از این مقاله استفاده کنید:
http://www.flipcode.com/archives/Interfacing_Visual_Basic_And_C.shtml

[REVEX]
شنبه 06 مهر 1387, 17:40 عصر
در صورتی که dll با Delphi باشه و پارامتر های اون هم مشخص باشه،میشه از این آموزش استفاده کرد؟
ممنون میشم یه توضیح کلی بدید.

Nima_NF
شنبه 06 مهر 1387, 20:17 عصر
;603992']در صورتی که dll با Delphi باشه و پارامتر های اون هم مشخص باشه،میشه از این آموزش استفاده کرد؟
ممنون میشم یه توضیح کلی بدید.
با dll های معمولی که توسط زبان های مختلف می سازید (همان مقاله) تضمینی وجود ندارد که کاملا درست کار کند.
برای اینکه کتابخانه های شما با اکثر زبان ها قابل استفاده باشد می توانید از COM استفاده کنید که هم نوشتن آن سخت است هم استفاده از آن و محدود به ویندوز هم می شوید.

[REVEX]
شنبه 06 مهر 1387, 20:33 عصر
با تشکر
قکر کنم من منظور رو بد رسوندم.
یه DLL هست که با Delphi 7 نوشته شده و نویسنده توضیحات و پارمتر های اون رو گذاشته.
حالا من قصد دارم اون Dll رو تو VC++6 استفاده کنم.
روش استفاده در VC رو میشه توضیح بدید؟

Nima_NF
دوشنبه 08 مهر 1387, 20:38 عصر
;604083']با تشکر
قکر کنم من منظور رو بد رسوندم.
یه DLL هست که با Delphi 7 نوشته شده و نویسنده توضیحات و پارمتر های اون رو گذاشته.
حالا من قصد دارم اون Dll رو تو VC++6 استفاده کنم.
روش استفاده در VC رو میشه توضیح بدید؟
دقیقا جواب همین مطلب را توضیح دادم! دوباره بخوانید:


با dll های معمولی که توسط زبان های مختلف می سازید (همان مقاله) تضمینی وجود ندارد که کاملا درست کار کند.
برای اینکه کتابخانه های شما با اکثر زبان ها قابل استفاده باشد می توانید از COM استفاده کنید که هم نوشتن آن سخت است هم استفاده از آن و محدود به ویندوز هم می شوید.

ترجمه مجدد آن می شود تضمینی نیست که dll نوشته شده در دلفی با ++C کاملا سازگار باشد.

به همان شکل ذکر شده در مقاله عمل کنید، مثلا:




typedef void ( *funcName )( */parameters here/* );
funcName FuncAddress;

HINSTANCE hDLL = LoadLibrary("Yourdll.dll");

if (hDLL != NULL)
{
FuncAddress = (funcName )GetProcAddress((HMODULE)hDLL, "DLLFunc1");

if ( !FuncAddress )
{
// handle the error FreeLibrary(hDLL);
return SOME_ERROR_CODE;
}
else
// something else
}

[REVEX]
چهارشنبه 10 مهر 1387, 08:55 صبح
با تشکر ، با کد زیر حل شد.


#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "conio.h"

int main(int argc, char* argv[])
{
HINSTANCE LoadMe;
LoadMe = LoadLibrary("Project1.dll");
typedef unsigned char (__stdcall *CreateFn)();
CreateFn LibMEP;
unsigned char x;
LibMEP = (CreateFn)GetProcAddress(LoadMe, "func");
x = LibMEP();
getch();
return 0;
}