C#调用易语言DLL

iuhxq 2013-08-31 11:16:37
请教下,C#调用易语言DLL,出现不稳定,运行一段时间以后,程序就退出了,是什么原因呢?


易语言代码:
.版本 2

.子程序 Receive, 文本型, 公开
.参数 Message, 文本型

返回 (Message)

C#代码:
        [DllImport("e.dll", CharSet=CharSet.Ansi)]
public static extern string Receive(string s);

static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
var r = Receive(i.ToString());
Console.WriteLine(r);
}
Console.Read();
}


这样运行,只能显示0和1
如果把易语言“文本型”改成“整数型”,把C#参数和返回值string改成int就可以正确运行

初步怀疑跟指针、内存释放什么的有关系,请高手指教,谢谢!!!
...全文
714 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2013-09-03
  • 打赏
  • 举报
回复
易语言其实就是vb
iuhxq 2013-09-03
  • 打赏
  • 举报
回复
发现一个奇怪问题,编译出exe,如果鼠标双击,可以运行,如果是直接用vs里“启动”就无法得到正确结果 还有个问题,我换如下代码:
        [DllImport("e.dll")]
        public static extern string Receive(string s);

        static void Main(string[] args)
        {
            for (int j = 0; j < 10; j++)
            {
                Task.Factory.StartNew(() =>
                    {
                        for (int i = 0; i < int.MaxValue; i++)
                        {
                            Console.WriteLine(Receive(i.ToString()));
                            Thread.Sleep(1000);
                        }
                    }
                );

            }
            Console.Read();
        }
程序运行一会就回出错
iuhxq 2013-09-02
  • 打赏
  • 举报
回复
引用 5 楼 qq578023708 的回复:
一样的代码,在我这里不能得到结果
Bob66666 2013-09-01
  • 打赏
  • 举报
回复

jshi123 2013-09-01
  • 打赏
  • 举报
回复
改成文本型指针试下
threenewbee 2013-08-31
  • 打赏
  • 举报
回复
不要返回字符串。 应该在C#初始化一个数组,传给e语言,e语言把结果写进去。也就是使用参数代替返回值。
EnForGrass 2013-08-31
  • 打赏
  • 举报
回复
函数原型是什么
rtdb 2013-08-31
  • 打赏
  • 举报
回复
易语言? 好玩么?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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