马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 venski 于 2015-5-19 00:02 编辑
通过powerbasic写自己要用的功能.
#COMPILE DLL "tcdll.dll" '表示编译成DLL文件,后面的DLL名称自己定义.
#DIM ALL '声明所有
%USEMACROS = 1
#INCLUDE "Win32API.inc" 'Win32API函数库,只要这样用了大部分的API都可以直接用
GLOBAL ghInstance AS DWORD '这句测试这里可以注释掉
'声明函数时,用ALIAS别名和EXPORT导出关键字,字符串由于TC传的是指针,所以,你应该用Copymemory,具体介绍,请百度
FUNCTION testfun ALIAS "testfun" (BYREF ReceiveStr AS string)EXPORT AS STRING
'内部字符串,也是计算后的返回结果
DIM PrivateStr AS STRING
'(接受)传入字符串的指针变量
DIM ReceiveStrPtr AS LONG
ReceiveStrPtr=VARPTR(ReceiveStr)
'使用CopyMemory Api 将传入字符串按指针复制一份
DIM CopyReceive AS STRING
CopyReceive$ = SPACE$(512) '大小随你自己意愿修改吧
CopyMemory(BYVAL STRPTR(CopyReceive),BYVAL ReceiveStrPtr,512)
'strReceive = str$(strReceive)
'这儿测试:内部字符串与得到的字符串相加结果是否正常.后期字符串长度截取,自己处理吧,查找$NUL截止即可
MSGBOX CopyReceive
PrivateStr="内部字符串测试---" & CopyReceive
'函数输出
testfun=PrivateStr
END FUNCTION
'我这里测试,就不理会libmain和dllmain,因为我用不到,这只是测试
'你在TC调用方法如下
我的结果=dllcall("tcdll.dll","char *","testfun","char *","外部传入字符串计算测试!")
//你会看到结果应该是: 内部字符串测试---外部传入字符串计算测试!
这是一个例子而已,具体要实现什么,自己动手,丰衣足食!
|