托管到非托管代码 - 方法内的递归调用

时间:2018-04-03 13:33:53

标签: c# marshalling

我有一个由非托管代码(PowerBuilder)调用的C#函数。我已经安装了Robert Giesecke的NuGet软件包“UnmanagedExports”。

using RGiesecke.DllExport;
using System.Runtime.InteropServices;
using System;

internal static class UnmanagedExports
    {
        [DllExport("ExpTest", CallingConvention = CallingConvention.Winapi)]
        [return: MarshalAs(UnmanagedType.I4)]  
        public static int ExpTest([MarshalAs(UnmanagedType.LPWStr)] string ddMMyyyy)
        {
          int WeekNumber;
          . . .
          . . .
          return WeekNumber;
        }

这很好用,但有一种情况我必须进行递归调用,传递一个新字符串:

WeekNumber = ExpTest(“new string”);

PowerBuilder现在在调用中崩溃,我认为这是因为ExpTest需要一个非托管字符串。 是否可以递归调用此方法,例如以某种方式使“新字符串”不受管理?

0 个答案:

没有答案