如何向DLL传递CString类型参数? ( 积分: 100 )

  • 主题发起人 主题发起人 ian
  • 开始时间 开始时间
I

ian

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi如何调用下面的函数?尤其是CString&amp;&nbsp;类型如何调用?<br><br>动态链接库kmcappdll.dll中:&nbsp;<br>extern&nbsp;&quot;C&quot;&nbsp;void&nbsp;GetOperationInformation(void&nbsp;*p,int&nbsp;OperationNumber,char&nbsp;*ParameterName,CString&amp;&nbsp;ParameterValue);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;获取指定工序的指定参数信息。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;*P:接口1获得的指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;OperationNumber:第几个工序;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;ParameterName:要获取的工序参数名称:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;ParameterValue:返回值,表示获取的工序参数内容:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;例如:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;GetOperationInformation(p,5,“工序名称”,ParameterValue);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;表示获取第5道工序的工序名称,获取的内容存放至ParameterValue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>CSDN上lxtnt给出答案如下,但出现内存错误:<br>Procedure&nbsp;GetOperationInformation(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P:Pointer;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OperationNumber:Integer;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParameterName:Pchar;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParameterValue:PString);&nbsp;&nbsp;<br>stdcall;&nbsp;external&nbsp;&nbsp;&nbsp;'kmcappdll.dll&nbsp;'&nbsp;name&nbsp;&nbsp;'GetOperationInformation&nbsp;';&nbsp;<br><br>Var&nbsp;<br>&nbsp;ParameterValue:String;&nbsp;<br>begin&nbsp;<br>&nbsp;SetLength(ParameterValue,255);&nbsp;<br>&nbsp;GetOperationInformation(p,5,&nbsp;'工序名称&nbsp;',Pointer(ParameterValue));&nbsp;&nbsp;<br>end;&nbsp;<br><br><br>http://topic.csdn.net/u/20070909/10/b3ce6e7f-1c1d-464e-8870-f1d666bbf171.html
 
CString是MFC中的类,两种不同语言的对象系统怎么可能兼容。
 
可以用pchar试试
 
是啊,所以在请求帮助,如果谁能给出用C++重新封装转换的代码也行
 
用PCHAR,其实如果你要想在其他语言中调用,就不应该用CSTRING,应该换成CHAR&nbsp;*,这样兼容性会比较好的
 
PChar、Pointer(String)&nbsp;都试验了<br>目前看来最好的办法是用C++重新将那个dll封装一下,将CString转换成C++的类型就可以了<br>不知道谁能帮个忙,给出完整的代码示例
 
extern&nbsp;&quot;C&quot;&nbsp;void&nbsp;GetOperationInformationEx(void&nbsp;*p,int&nbsp;OperationNumber,char&nbsp;*ParameterName,char&nbsp;*ParameterValue)<br>{<br>&nbsp;&nbsp;CString *ab=new&nbsp;CString(ParameterValue);<br>&nbsp;&nbsp;GetOperationInformation(*ab);<br>&nbsp;&nbsp;delete&nbsp;ab;<br>}
 
Procedure&nbsp;GetOperationInformation(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P:Pointer;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OperationNumber:Integer;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParameterName:Pchar;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParameterValue:PPChar);&nbsp;&nbsp;<br>stdcall;&nbsp;external&nbsp;&nbsp;&nbsp;'kmcappdll.dll&nbsp;'&nbsp;name&nbsp;&nbsp;'GetOperationInformation&nbsp;';
 
后退
顶部