首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:传递一个指向字符串的指针以保存返回的值

C#:传递一个指向字符串的指针以保存返回的值
EN

Stack Overflow用户
提问于 2016-08-03 17:23:56
回答 5查看 1.4K关注 0票数 0

我目前正在与FANUC31I型B控制器通信。我的目标是能够上传一个部件程序,验证没有数据丢失,并在需要时删除程序。

FANUC有一个可在C#中使用的有用函数的FOCAS库。下面是我遇到麻烦的DllImport。

代码语言:javascript
复制
/* read selected file name */
[DllImport("FWLIB64.dll", EntryPoint="cnc_pdf_rdmain")]
public static extern short cnc_pdf_rdmain( ushort FlibHndl, [Out,MarshalAs(UnmanagedType.AsAny)] Object a );

根据他们的技术团队,我需要传递一个指向字符串的指针,以保存存储在对象a中的返回值。字符串是刚刚上传到系统的部件程序的文件路径。这对我来说很重要,因为它将允许我选择上传的程序作为主程序。

这是我在我的主要代码中使用的:

代码语言:javascript
复制
Object mg1 = new object();
        rslt = Focas64.cnc_pdf_rdmain(this.i31Handle, );
        if (rslt != 0)
        {
            StopActivity(true);
            return;
        }

我对C#和编码并不太熟悉。所以请帮我把它哑了。谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-04-03 18:34:25

我在下面的工作代码中解决了这个问题:

代码语言:javascript
复制
        // Verify code
        byte[] a = new byte[244];
        rslt = Focas64.cnc_pdf_rdmain(this.i31Handle, a);
        string result = System.Text.Encoding.UTF8.GetString(a);
        if (rslt != 0)
        {
            StopActivity(true, Convert.ToString(rslt), this.tDownloadls, true);
            return;
        }
票数 0
EN

Stack Overflow用户

发布于 2016-08-03 17:43:42

我不太了解你们正在谈论的FANUC产品,但是这里有一些字符串基础。

您可以创建这样的字符串

代码语言:javascript
复制
string myString;

然后像这样得到指向它的指针

代码语言:javascript
复制
&myString;

所以您的代码可能如下所示

代码语言:javascript
复制
string myString;
rslt = Focas64.cnc_pdf_rdmain(this.i31Handle, &myString);
票数 0
EN

Stack Overflow用户

发布于 2016-08-03 18:26:26

您可以使用以下建议:

代码语言:javascript
复制
[DllImport("FWLIB64.dll", EntryPoint="cnc_pdf_rdmain")]

public static unsafe extern short cnc_pdf_rdmain( ushort FlibHndl, [ Out, MarshalAs( UnmanagedType.AsAny ) ] out Object a );

Object mg1 = new object( );
rslt = Focas64.cnc_pdf_rdmain(this.i31Handle, out mg1 );
if ( rslt != 0 )
{
  StopActivity( true );
  return;
}
string result = mg1.ToString( );
Console.WriteLine( result );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38750068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档