遗憾迟香 发表于 2019-12-26 20:16

C#调用易语言dll第二次就闪退

本帖最后由 遗憾迟香 于 2019-12-26 20:17 编辑

我用易语言写了一个获取网页源码的dll
.版本 2


.子程序 GetS, 文本型, 公开
.参数 url, 文本型


返回 (网页_取网页源码 (url))

在C#中调用
using System.Runtime.InteropServices;

      private static extern string GetS(string url);
private void button1_Click(object sender, EventArgs e)
      {
            try
            {
                textBox2.Text = GetS(textBox1.Text);
            }
            catch (Exception err)
            { MessageBox.Show(err.Message); }
      }


第一次调用成功

第二次就闪退了,没有报错,try catch没用
输出内容:
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“c:\users\administrator\documents\visual studio 2012\Projects\dll调用测试\dll调用测试\bin\Debug\dll调用测试.vshost.exe”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_zh-Hans_b77a5c561934e089\mscorlib.resources.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
线程 'vshost.NotifyLoad' (0x1938) 已退出,返回值为 0 (0x0)。
线程 '<无名称>' (0x12f8) 已退出,返回值为 0 (0x0)。
线程 '<无名称>' (0x210c) 已退出,返回值为 0 (0x0)。
线程 'vshost.LoadReference' (0x1950) 已退出,返回值为 0 (0x0)。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“c:\users\administrator\documents\visual studio 2012\Projects\dll调用测试\dll调用测试\bin\Debug\dll调用测试.exe”,符号已加载。
“dll调用测试.vshost.exe”(托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
程序“ dll调用测试.vshost.exe: 程序跟踪”已退出,返回值为 0 (0x0)。
程序“ dll调用测试.vshost.exe: 托管(v4.0.30319)”已退出,返回值为 -1073740940 (0xc0000374)。
重启程序,又正常了,第二次又闪退了,请问这是怎么回事?

小灵、 发表于 2019-12-26 21:02

试试LoadLibrary

别欺负我啊 发表于 2019-12-26 21:05

释放dll

ad666666 发表于 2019-12-26 21:38

米米米米 发表于 2019-12-26 21:50

厉害了 我的哥哥

Suppose 发表于 2019-12-26 22:16

返回值不要直接用string用IntPtr
页: [1]
查看完整版本: C#调用易语言dll第二次就闪退