首页 > 解决方案 > 将任何参数传递给 extern "C" 访问的函数

问题描述

我在我的 C++ 项目中使用 x64asm 代码。我正在使用此代码访问我在 .asm 文件中定义的函数:

extern "C" void strpl(char* , int*, bool )

我想要的是在第一个参数处有任何类型的 pf 指针,而不仅仅是char *

我尝试了这样的自定义模板:

template<typename T>
extern "C" void strpl(T const* , int*, bool )

但它说自定义类型与extern "C"不兼容

我应该怎么做才能让它传递任何类型的指针作为第一个参数

标签: c++assembly

解决方案


我相信原始的 void 指针 ( void*) 就足够了。

在调用 C/C++ 代码中,您可以使用 C 样式转换在 void 指针和其他原始类型的指针之间进行转换。

一些建议... 模板的使用对于您要完成的工作来说太过分了,并且需要大量的理解才能使模板正确。有些解决方案不需要模板,所以在必要之前避免使用它们。


推荐阅读