如何在C#函数中转换C++函数

How do i convert a C++ function in c# function

本文关键字:函数 C++ 转换      更新时间:2023-10-16

我正在做Amibroker C#插件项目。Amibroker SDK是用C++编写的,但我使用的是一个C#插件,它的作用与Amibroker C++的作用完全相同。C#插件链接

C#插件中的一切都很好,除了一个用C++编写的函数:

PLUGINAPI struct RecentInfo* GetRecentInfo(LPCTSTR ticker)
{
   //Process & return RecentInfo* (RecentInfo is a structure)
}

在C#标准插件中,它被转换为这种方式

public RecentInfo GetRecentInfo(string ticker)
{
    //Process & Return RecentInfo
}

不幸的是,Amibroker应用程序因此错误转换而崩溃。因此,我确实尝试以我的方式将其转换为Amibroker应用程序,但多次失败这就是我迄今为止所尝试的:

尝试1:

unsafe public RecentInfo* GetRecentInfo(string ticker)
{
    //Process & Return RecentInfo* (RecentInfo structure is declared as unsafe)
}

影响:

Amibroker应用程序未加载

附件2:

public IntPtr GetRecentInfo(string ticker)
{
    //Process & Return Pointer using Marshal.StructureToPtr
}

影响:

Amibroker应用程序未加载

附件3:

public void GetRecentInfo(string ticker)
{
    //Useless becoz no return type
}

影响:

Amibroker加载&调用函数是否正确,但如何返回结构指针

因此,我绞尽脑汁想知道C#中C++函数的确切转换

如果它完全是用c#编写的,那就很好了,认为在实现中存在问题,而不是调用

public RecentInfo GetRecentInfo(string ticker)
{
      RecentInfo rc;
    //Process & Return RecentInfo
      return rc;
}

或者这个,(你也可以使用参考)

public void GetRecentInfo(string ticker,out RecentInfo rc )
{
rc=new RecentInfo();
....process
 return ;
}