【问题标题】:__vectorcall via C++/CLI or PInvoke (C#)__vectorcall 通过 C++/CLI 或 PInvoke (C#)
【发布时间】:2016-09-27 01:16:34
【问题描述】:

有什么方法可以通过 PInvoke 或 C++/CLI 调用使用 __vectorcall 调用约定的 C++ 函数?到目前为止,我的尝试表明这是不可能的(还)。我想我会在这里询问是否有人知道有创意的方式。

【问题讨论】:

    标签: c# c++ command-line-interface pinvoke calling-convention


    【解决方案1】:

    您可以在 C++ 中创建一个转发函数,该函数以正常方式 (cdecl) 获取其参数,然后将这些参数转发到 __vectorcall 中期望它们的函数。

    【讨论】:

      【解决方案2】:

      您不能使用 p/invoke 调用 __vectorcall,但可以使用 C++/CLI。

      在 C++/CLI 中这样做并没有什么特别之处。 C++编译器有支持,你可以简单地用这个调用约定声明函数并调用它们。

      【讨论】:

      • 当使用 /clr 声明 __vectorcall 函数时,我收到编译器警告。它只是将函数转换为 __stdcall:i.gyazo.com/7bdf18d6078a9ac327b269a7f0f90d50.png
      • 您不能在托管函数中使用向量调用,但在非托管函数中应该没问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多