vc++编的dll在pb中怎么调用!帮帮忙

tommyhuanglei 2003-12-22 03:52:27
vc++编的dll在pb中怎么调用!帮帮忙
bool OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits);
vc里面声明的函数是这样的,在vc里面调用他们写的是
CString strCom="COM";
CString temp="";
pCB->GetWindowText(temp);
strCom+=temp;
if(OpenComm(strCom,CBR_9600,NOPARITY,8, ONESTOPBIT))
...全文
94 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
tommyhuanglei 2004-01-02
  • 打赏
  • 举报
回复
算了我结帖了,我自己写底层的函数吧!
谢谢大家了!
tommyhuanglei 2003-12-30
  • 打赏
  • 举报
回复
好像没有这个标记吧,这么说是调用不了了吗?
我没有他们的源码!
hzhxxx 2003-12-29
  • 打赏
  • 举报
回复


同意 : banalman(飘泊) ( ) 信誉:98

上的,假如在 BCB 中,接口函数要加 __stdcall
banalman 2003-12-27
  • 打赏
  • 举报
回复
您的vc 动态库出口函数请加上 pascal 这个调用规则,另外请问出错是什么?
pb 调用的动态库必须是符合pascal 调用规则的。例如:
__declspec(dllexport) int pascal Read_Card(int iPort,int iType,int iOffset,int iLen,char *cBuf)
另外 ONESTOPBIT 这些都是系统宏常量。
wujingbiao 2003-12-26
  • 打赏
  • 举报
回复
你定义成这样试试:
function boolean OpenComm( ref string pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits ) library 'dll_name.dll'
tommyhuanglei 2003-12-26
  • 打赏
  • 举报
回复
我已经把dll库!放到了应用程序里面了!
netxzs 2003-12-26
  • 打赏
  • 举报
回复
为了在PowerBuilder应用程序中调用存放在动态链接库pbdll.dll中的函数out_num(),需要事先声明。在声明时要明确:

  (1)函数的作用范围是全局的还是局部的。全局声明可使该函数用于整个应用,局部声明仅使该函数在对象的脚本中有效。
  (2)必须指明函数返回的数据类型、传递参数的个数和类型,并将存放该函数的动态链接库的名字告诉PowerBuilder。

  声明完成后,应用程序可以调用函数out_num() ,调用该函数的代码与调用任何标准的PowerScript函数一样,区别在于:该函数存放在动态链接库中,调用它时,动态链接库装入内存,函数执行。

  下面是PowerBuilder中被调用函数的使用声明:

  Function int out_num ( int irow ) LIBRARY "pbdll.dll"

  在PowerBuilder中调用函数out_num()代码如下:

int irow,retcode
irow=dw_1.rowcount()
retcode=out_num(irow)

  四、 加载DLL

  当PowerBuilder应用程序调用外部函数时,动态链接库装入内存。操作系统会在如下位置查找动态链接库:

  (1)EXE文件运行的目录。
  (2)Windows的系统目录。

  如果没有找到DLL,应用程序将产生运行错误,显示一个对话框,见图1-2(略)。如果找到DLL,它就被映射到程序的内存空间。
leon_l 2003-12-24
  • 打赏
  • 举报
回复
把错误信息贴出来看看!
tommyhuanglei 2003-12-24
  • 打赏
  • 举报
回复
自己再顶一下!
还没有解决!
tommyhuanglei 2003-12-23
  • 打赏
  • 举报
回复
extern "C" __declspec(dllexport) bool OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits);
extern "C" __declspec(dllexport) int SendShortMessage(const char* send_number,const char* send_msg,SM_PARAM *sm_param_temp) ;
extern "C" __declspec(dllexport) bool DeleteAllMessage();
extern "C" __declspec(dllexport) bool DeleteMessage(int index);
extern "C" __declspec(dllexport) void Message();
extern "C" __declspec(dllexport) bool CloseComm();
extern "C" __declspec(dllexport) int ReceiveMessage(SM_PARAM *sm_param,int index);
extern "C" __declspec(dllexport) int ReceiveAllMessage(SM_PARAM *sm_param);
extern "C" __declspec(dllexport) int ReceiveUnreadMessage(SM_PARAM *sm_param);
extern "C" __declspec(dllexport) bool SetSendModule(int loopback);
extern "C" __declspec(dllexport) BOOL CheckNo();
extern "C" __declspec(dllexport) BOOL GetCenterNumber(char* strCenterNumber);
extern "C" __declspec(dllexport) BOOL SetCenterNumber(const char* strCenterNumber);

extern "C" __declspec(dllexport) int EncodePdu(const SM_PARAM* pSrc, char* pDst);
extern "C" __declspec(dllexport) int String2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength);
lmby 2003-12-22
  • 打赏
  • 举报
回复
你的头文件呢?
GoldProgramer 2003-12-22
  • 打赏
  • 举报
回复
CBR_110 = 110;
CBR_300 = 300;
CBR_600 = 600;
CBR_1200 = 1200;
CBR_2400 = 2400;
CBR_4800 = 4800;
CBR_9600 = 9600;
CBR_14400 = 14400;
CBR_19200 = 19200;
CBR_38400 = 38400;
CBR_56000 = 56000;
CBR_57600 = 57600;

NOPARITY = 0;
ODDPARITY = 1;
EVENPARITY = 2;
MARKPARITY = 3;
SPACEPARITY = 4;

ONESTOPBIT = 0;
ONE5STOPBITS = 1;
TWOSTOPBITS = 2;
pbsql 2003-12-22
  • 打赏
  • 举报
回复
他在vc里面正常不一定就是对的,要在pb里能调用才算通用
tommyhuanglei 2003-12-22
  • 打赏
  • 举报
回复
我的qq:22443800
tommyhuanglei 2003-12-22
  • 打赏
  • 举报
回复
他在vc里面正常啊
pbsql 2003-12-22
  • 打赏
  • 举报
回复
类型没有错,是vc++程序的问题吧,没有作好dll
tommyhuanglei 2003-12-22
  • 打赏
  • 举报
回复
OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits);
pbsql 2003-12-22
  • 打赏
  • 举报
回复
CBR_9600,NOPARITY,ONESTOPBIT可能是常数,你看他定义的是什么类型
tommyhuanglei 2003-12-22
  • 打赏
  • 举报
回复
自己顶一下,帮帮忙啊!
现在出错是外部函数错误,可是在vc的例子正常啊!
tommyhuanglei 2003-12-22
  • 打赏
  • 举报
回复
老大,还是不行!
我给你加分!
可否留个qq我把错误发给你!
他们在vc里是这么写的
OpenComm(strCom,CBR_9600,NOPARITY,8, ONESTOPBIT)
CBR_9600 和NOPARITY 和 ONESTOPBIT 可是不是数值型的,在vc里面为什么可以调用?
加载更多回复(1)

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧