2016-09-27 9 views
0

Есть ли способ вызвать функции C++, которые используют соглашение вызова __vectorcall через PInvoke или C++/CLI? До сих пор мои попытки предполагали, что это пока невозможно. Фигурировал, что я попрошу здесь посмотреть, знает ли кто-нибудь о творческом пути.__vectorcall через C++/CLI или PInvoke (C#)

ответ

0

Вы можете создать функцию пересылки в C++, которая принимает свои аргументы обычным способом (cdecl), а затем перенаправляет их на функцию, ожидающую их в __vectorcall.

0

Вы не можете вызывать __vectorcall с помощью p/invoke, но вы можете использовать C++/CLI.

В C++/CLI нет ничего особенного. У компилятора C++ есть поддержка, вы можете просто объявить функции с этим соглашением о вызове и вызвать их.

+0

Я получаю предупреждение о компиляторе, когда функция __vectorcall объявлена ​​с/clr. Он просто преобразует функцию в __stdcall: https://i.gyazo.com/7bdf18d6078a9ac327b269a7f0f90d50.png – Cam

+0

Вы не можете использовать векторный вызов в управляемой функции, но это должно быть хорошо в неуправляемом. –