Delphi调用VC写的DLL的问题 ( 积分: 100 )

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
看了网上的介绍,用VC写了一个示例DLL:
Second.cpp
#include "stdafx.h"
extern "C" __declspec(dllexport)
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
void __stdcall Hello()
{
MessageBox(NULL,"AAAAAA","Hai",MB_OK);
}
SecondDll.def
LIBRARY SecondDll
EXPORTS
Hello
但是在Delphi里调用却老是报错,请各位多多指点。
 
B

blow

Unregistered / Unconfirmed
GUEST, unregistred user!
你在VC中能调用吗?在delphi 中你是怎么调用的呢?
 

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
用loadlibrary来装进来,然后GetProcAdress来得到涵数入口处,但是得到的总是为空.
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
void extern "C" __declspec(dllexport) Hello()
试试
 

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
to:Mike1234567890
照你那样是可以调用的,但是现在我写了一个涵数:
extern "C" __declspec(dllexport) int __stdcall Max(int a,int b)
{
if (a > b) {
return a;
} else
{
return b;
}
}
然后再用delphi来调用,GetProcAdress来得到涵数入口处,也是得到为空.这又是为什么?
 

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
你用随便一个pe编辑器,打开那dll看看导出函数是否叫那个名字
 

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi带的tdump查看,EXPORT ord:0002='_Max@8'
然后再GetProcAddress(h,'_Max@8')就可以了,谢谢白河愁老兄。
还想请问一下,就是怎么写.def文件,如何让VC按.def文件来导出涵数了?
 

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道怎么写.def文件了。
 

浪风

Unregistered / Unconfirmed
GUEST, unregistred user!
给分了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
795
import
I
I
回复
0
查看
803
import
I
顶部