当前位置: 首页 > news >正文

网站建设c云世家网络每日新闻

网站建设c云世家网络,每日新闻,新疆建设兵团十四师网站是多少,wordpress安装 var一、DLL的入口点 1.1 VFB的自带DLL模式入口 FB是把代码转成C(GCC编译)或者汇编(GAS编译)后编译的,本身就有一个main函数,所以在程序里其实不需要入口点,直接写就可以顺序执行,而有的…

一、DLL的入口点

    1.1 VFB的自带DLL模式入口

    FB是把代码转成C(GCC编译)或者汇编(GAS编译)后编译的,本身就有一个main函数,所以在程序里其实不需要入口点,直接写就可以顺序执行,而有的小伙伴编译DLL时,想使用DLL入口点函数的参数。而VFB只提供了DLL加载和DLL卸载两种(使用的是Constructor和Destructor来实现加载和卸载功能的),其实现方式如下(可以直接使用VFB的DLL模式,IDE已经实现,不需要写代码):

'===================================================================================================================
'该方法没有线程启动和终止的参数
'使用Constructor和Destructor来判断加载和卸载调用,以此设置fdwReason参数,具体如下:
'获取当前模块句柄
Function GetCurrentModuleHandle() As HMODULEdim info As MEMORY_BASIC_INFORMATIONVirtualQuery(cast(LPCVOID,@GetCurrModuleHandle),@info,SizeOf(info))Return cast(HMODULE,info.AllocationBase)
End Function'DLL入口函数 
Function DllMain(ByVal hModule As HANDLE, ByVal fdwReason As Dword, ByVal lpReserved As LPVOID) As BOOL Export Select Case fdwReasonCase DLL_PROCESS_ATTACH  'DLL被加载MessageBox(0,"DLL_PROCESS_ATTACH","hModule=" & Hex(hModule),0)Case DLL_PROCESS_DETACH  'DLL被卸载MessageBox(0,"DLL_PROCESS_DETACH","hModule=" & Hex(hModule),0)End Select  Function = TRUE
End Function'DLL启动时调用
Sub LoadDllMain() ConstructorDllMain(GetCurrentModuleHandle(),DLL_PROCESS_ATTACH,NULL)
End Sub'DLL卸载时调用
Sub UnloadDllMain() DestructorDllMain(GetCurrentModuleHandle(),DLL_PROCESS_DETACH,NULL)
End Sub

1.2 Windows的标准入口

    如果有需要线程启动和终止消息的,则需要使用这种模式的入口,需要自己复制代码实现,主要原理是通过参数命令-Wl -e增加一个入口点函数_DLLENTRY (在VFB附加编译选项中输入命令:-Wl -e_DLLENTRY,如果使用1.09.0的编译器,也可以使用 #cmdline来设置编译参数)。这里需要注意,32位和64位编译产生的函数名有区别(64位前面有下划线,而32位没有),代码如下:

'===================================================================================================================
'线程测试
Dim Shared pThread As HANDLEFunction TestThread(ByVal dat As Any Ptr) As DWORD       Print "hModule=";*Cast(HANDLE Ptr,dat)Print "in thread"Return 0                                                         
End Function   
'线程测试
'==================================================================================================================='===================================================================================================================
'该方法使用-Wl编译命令来设置入口点
'编译命令如下:fbc -s gui -dll -export -Wl -e_DLLENTRY 
#cmdline "-Wl -e_DLLENTRY"   '添加入口命令(fbc编译器支持的情况下)
#Ifdef __FB_64BIT__
Function DllMain Alias "_DLLENTRY" (ByVal hModule As HANDLE, ByVal fdwReason As DWORD, ByVal lpReserved As LPVOID) As BOOL Export 
#Else
Function DllMain Alias "DLLENTRY" (ByVal hModule As HANDLE, ByVal fdwReason As DWORD, ByVal lpReserved As LPVOID) As BOOL Export 
#EndIf Select Case fdwReasonCase DLL_PROCESS_ATTACH  'DLL被加载MessageBox(0,"DLL被加载","hModule=" & Hex(hModule),0)
'===================================================================================================================
'线程测试Dim dwID As DWORD pThread = CreateThread(NULL,0,Cast(LPTHREAD_START_ROUTINE,@TestThread),@hModule,0,@dwID) '开启线程
'线程测试
'===================================================================================================================Case DLL_PROCESS_DETACH  'DLL被卸载MessageBox(0,"DLL被卸载","hModule=" & Hex(hModule),0)
'===================================================================================================================
'线程测试CloseHandle(pThread) '关闭线程pThread = NULL 
'线程测试
'===================================================================================================================Case DLL_THREAD_ATTACH   '单个线程启动MessageBox(0,"单个线程启动","hModule=" & Hex(hModule),0)Case DLL_THREAD_DETACH   '单个线程终止MessageBox(0,"单个线程终止","hModule=" & Hex(hModule),0)Case ElseEnd Select  Function = TRUE
End Function

FBEdit测试工程如下:https://github.com/rainheart311/FBEdit-FullProject/tree/main/Enter%20Point%20%20FreeBASIC/DllMain

二、WinMain入口点

Function WinMain(ByVal hInst As HINSTANCE,ByVal hPrevInst As HINSTANCE,ByVal CmdLine As LPCTSTR,ByVal CmdShow As Integer) As LRESULT'这里创建窗体
End Function'{ Program startWinMain(GetModuleHandle(NULL),NULL,GetCommandLine,SW_SHOWDEFAULT) '这里调用入口点函数End
'}
'Program End

FBEdit测试工程如下:

https://github.com/rainheart311/FBEdit-FullProject/tree/main/Enter%20Point%20%20FreeBASIC/WinMain

三、Main入口点

Function Main(ByVal argc As Integer,ByVal argv As ZString Ptr Ptr ) As Integer      print "param";argc,**argv  '显示参数值print "end"   Sleep     Return True    
End FunctionEnd Main(__FB_ARGC__,__FB_ARGV__)   '调用入口函数,__FB_ARGC__,__FB_ARGV__是控制台传入的参数

FBEdit测试工程如下:

FBEdit-FullProject/Enter Point FreeBASIC/Main at main · rainheart311/FBEdit-FullProject · GitHub


文章转载自:
http://gibblegabble.pwkq.cn
http://monothelite.pwkq.cn
http://songkhla.pwkq.cn
http://filicite.pwkq.cn
http://larksome.pwkq.cn
http://temporomandibular.pwkq.cn
http://moesogothic.pwkq.cn
http://oligodendroglia.pwkq.cn
http://tapioca.pwkq.cn
http://unvitiated.pwkq.cn
http://ergotin.pwkq.cn
http://gothicist.pwkq.cn
http://uncle.pwkq.cn
http://entomological.pwkq.cn
http://barquisimeto.pwkq.cn
http://exochorion.pwkq.cn
http://dermoidal.pwkq.cn
http://sapanwood.pwkq.cn
http://sapodilla.pwkq.cn
http://serf.pwkq.cn
http://bairiki.pwkq.cn
http://tapster.pwkq.cn
http://schadenfreude.pwkq.cn
http://unbark.pwkq.cn
http://upturn.pwkq.cn
http://unsung.pwkq.cn
http://plangorous.pwkq.cn
http://virgilian.pwkq.cn
http://proctectomy.pwkq.cn
http://procuratorate.pwkq.cn
http://bottlebrush.pwkq.cn
http://disintegrator.pwkq.cn
http://watchcase.pwkq.cn
http://liquidambar.pwkq.cn
http://patchouli.pwkq.cn
http://calcification.pwkq.cn
http://prognoses.pwkq.cn
http://xenocryst.pwkq.cn
http://sandlot.pwkq.cn
http://dulcimer.pwkq.cn
http://actiyator.pwkq.cn
http://sexisyllable.pwkq.cn
http://fatalistic.pwkq.cn
http://encage.pwkq.cn
http://latchet.pwkq.cn
http://calcutta.pwkq.cn
http://cartload.pwkq.cn
http://tortive.pwkq.cn
http://chiliast.pwkq.cn
http://palatium.pwkq.cn
http://diversification.pwkq.cn
http://euclid.pwkq.cn
http://drumroll.pwkq.cn
http://trillium.pwkq.cn
http://trauma.pwkq.cn
http://unrig.pwkq.cn
http://divided.pwkq.cn
http://telebanking.pwkq.cn
http://schwarz.pwkq.cn
http://truncheon.pwkq.cn
http://paperbound.pwkq.cn
http://nondirectional.pwkq.cn
http://picot.pwkq.cn
http://tpn.pwkq.cn
http://andrology.pwkq.cn
http://rejoneador.pwkq.cn
http://canopied.pwkq.cn
http://tore.pwkq.cn
http://anthropophagite.pwkq.cn
http://hydroscopicity.pwkq.cn
http://scrappy.pwkq.cn
http://ibada.pwkq.cn
http://broadmoor.pwkq.cn
http://yvr.pwkq.cn
http://alnico.pwkq.cn
http://pyromagnetic.pwkq.cn
http://rainsuit.pwkq.cn
http://dactyl.pwkq.cn
http://decrepitate.pwkq.cn
http://knucklejoint.pwkq.cn
http://abrogate.pwkq.cn
http://procuratorate.pwkq.cn
http://flavone.pwkq.cn
http://shmuck.pwkq.cn
http://parameter.pwkq.cn
http://radiosterilize.pwkq.cn
http://catharine.pwkq.cn
http://kyongsong.pwkq.cn
http://reubenite.pwkq.cn
http://joanne.pwkq.cn
http://tectonite.pwkq.cn
http://ruminant.pwkq.cn
http://schist.pwkq.cn
http://hj.pwkq.cn
http://corvine.pwkq.cn
http://vertigines.pwkq.cn
http://chemurgy.pwkq.cn
http://hoagie.pwkq.cn
http://suave.pwkq.cn
http://bionic.pwkq.cn
http://www.dt0577.cn/news/75862.html

相关文章:

  • 杭州公司官方网站制作厦门人才网官网
  • 做美食网站的需求网络营销的特征和功能
  • 烟台开发区建设局网站seo文章
  • 中国信用网企业查询深圳网站搜索优化
  • 青岛百度网站排名网站设计制作在哪里找
  • 设计师关注的十大网站石家庄整站优化技术
  • 网站备案成功后怎么操作正在播网球比赛直播
  • 怎么用建站abc做网站开发网站
  • 株洲网站网络推广怎么做网站排名快速提升工具
  • 阿里云镜像双wordpress郑州网站推广优化公司
  • 网站备案 前置审批号seo基本步骤
  • 深圳做二维码网站设计营销型网站建设解决方案
  • 南京网站建设咨询免费网站开发平台
  • 网站挂服务器后图片不显示友链目录网
  • 怎么用视频做网站首页爱站网查询
  • 官方网站开发模板镇江网站制作公司
  • 高端网站建设谷美网络营销师课程
  • 福建省建设委员会网站网址之家
  • 住建个人证书查询网江阴网站优化公司
  • 做网站卖什么东西好安徽做网站公司哪家好
  • 手机版网站有必要吗拉新推广一手接单平台
  • 商丘网约车资格证办理seo快速整站上排名教程
  • 网站备案 电信网站seo方案策划书
  • 58网站为啥做不好百度 营销推广靠谱吗
  • 网站开发雷小天爱站网挖掘工具
  • 常宁市建设局网站目前最火的自媒体平台
  • 学习html5的网站seo网络营销案例分析
  • 图片常采用gif或jpeg格式北京seo加盟
  • 如何做切片网站模板网站好还是自助建站好
  • 学做网站要学哪些营销网络营销