Windows下 c#调用c++生成的动态库时在不加壳的情况下如何隐藏动态库调用代码函数和参数
在不加壳的情况下,可以使用C++的名字修饰规则来隐藏动态库中的函数和参数。具体步骤如下:
- 在C++代码中使用
extern "C"语法来禁止C++编译器对函数名进行修饰。
extern "C" {
int myFunction(int arg1, int arg2);
}
- 在C#中使用DllImport语法来加载动态库,并指定函数名为不带修饰的C++函数名。
[DllImport("myLibrary.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int myFunction(int arg1, int arg2);
这样就可以在C#中调用动态库中的函数,而不会暴露函数名和参数的实际值。
原文地址: https://www.cveoy.top/t/topic/fFX7 著作权归作者所有。请勿转载和采集!