我有一个由非托管代码(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需要一个非托管字符串。 是否可以递归调用此方法,例如以某种方式使“新字符串”不受管理?