- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用CodeBlocks新建一个DLL工程,在生成的源代码中更改函数的声明为__stdcall,新建一个Def文件在文件中声明要导出的函数,这样就OK了!
下面贴出来示例的代码:
main.h
C++代码
#ifndef?__MAIN_H__ ??
#define?__MAIN_H__ ??
??
#include?windows.h ??
??
/*??To?use?this?exported?function?of?dll,?include?this?header ?
?*??in?your?project. ?
?*/??
??
//#ifdef?BUILD_DLL ??
//????#define?DLL_EXPORT?__declspec(dllexport) ??
//#else ??
//????#define?DLL_EXPORT?__declspec(dllimport) ??
//#endif ??
??
#ifdef?__cplusplus ??
extern?C??
{ ??
#endif ??
void?__stdcall?SomeFunction(const?LPCSTR?sometext); ??
int?__stdcall?SayHello(const?LPCSTR?lpCaption,?const?LPCSTR?lpText); ??
#ifdef?__cplusplus ??
} ??
#endif ??
??
#endif?//?__MAIN_H__??
main.cpp
C++代码
#include?main.h ??
??
//?a?sample?exported?function ??
void?__stdcall?SomeFunction(const?LPCSTR?sometext) ??
{ ??
????MessageBoxA(0,?sometext,?DLL?Message,?MB_OK?|?MB_ICONINFORMATION); ??
} ??
int?__stdcall?SayHello(const?LPCSTR?lpCaption,?const?LPCSTR?lpText) ??
{ ??
????MessageBoxA(0,?lpText,?lpCaption,?MB_OK?|?MB_ICONINFORMATION); ??
????return?0; ??
??
} ??
BOOL?WINAPI?DllMain(HINSTANCE?hinstDLL,?DWORD?fdwReason,?LPVOID?lpvReserved) ??
{ ??
????switch?(fdwReason) ??
????{ ??
????????case?DLL_PROCESS_ATTACH: ??
????????????//?attach?to?process ??
????????????//?return?FALSE?to?fail?DLL?load ??
????????????break; ??
??
????????case?DLL_PROCESS_DETACH: ??
????????????//?detach?from?process ??
????????????break; ??
??
????????case?DLL_THREAD_ATTACH: ??
????????????//?attach?to?thread ??
????????????break; ??
??
????????case?DLL_THREAD_DETACH: ??
????????????//?detach?from?thread ??
????????????break; ??
????} ??
????return?TRUE;?//?succesful ??
}??
Def文件
C++代码
EXPORTS ??
????SomeFunction ??
????SayHello ??
在CodeBlocks里设置项目的build option中linker Settings的Other Link Options中添加上你写的Def文件的文件名,比如MyDll.def”。这样编译好以后的dll就可以供Delphi使用了。
这里贴出在Delphi中静态调用DLL中函数的部分代码:
Delphi代码
??
implementation??
??
{$R?*.dfm}??
procedure?SomeFunction(const?sometext:?PChar);?stdcall;?external?Dll的名称.dll; ??
function?SayHello(const?lpCaptio
您可能关注的文档
- 土石坝施工挖运设计.doc
- 土石方放坡常用计算公式.doc
- 土耳其游玩注意事项.doc
- 土耳其追偿相关法律制度简介0.docx
- 土豆烧肉简易又好吃的家常菜.doc
- 土豆的37种吃法.doc
- 土豆的各种高档吃法.doc
- 土豆腊肠豆瓣糯米饭.doc
- 土豆饼等方便自做小吃.doc
- 土质学和土力学试卷(B).doc
- 2025年中国铸管沥青漆喷涂机市场调查研究报告.docx
- 2025至2031年中国聚四氟乙割管料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国屏蔽箱行业投资前景及策略咨询研究报告.docx
- 2025年中国B级电源电涌保护器市场调查研究报告.docx
- 2025至2031年中国陶瓷印章行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国保冷材料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国金彩立雕玻璃行业投资前景及策略咨询研究报告.docx
- 2025至2030年中国机箱螺母柱数据监测研究报告.docx
- 2025至2030年中国小GS管装饰头数据监测研究报告.docx
- 2025至2030年中国气动电阻焊机数据监测研究报告.docx
文档评论(0)