在c#代码中使用cpp dll
我尝试在C++应用程序中使用本机C++ DLL。 我跟着这篇文章开始了 虽然dll只使用c文件(如教程中所示),但当使用cpp文件时,我无法使其正常工作 使用dumpbin工具,我可以看到我导出的函数名发生了更改。 例如,函数调用“next”更改为“next”@@YAHH@Z“当我试图在c代码中调用它时,它找不到它 我的dll代码是:在c#代码中使用cpp dll,c#,c++,dll,C#,C++,Dll,我尝试在C++应用程序中使用本机C++ DLL。 我跟着这篇文章开始了 虽然dll只使用c文件(如教程中所示),但当使用cpp文件时,我无法使其正常工作 使用dumpbin工具,我可以看到我导出的函数名发生了更改。 例如,函数调用“next”更改为“next”@@YAHH@Z“当我试图在c代码中调用它时,它找不到它 我的dll代码是: __declspec(dllexport) int next(int n) { return n + 1; } c代码 使用c文件或cpp文件时,其代码
__declspec(dllexport)
int next(int n)
{
return n + 1;
}
c代码
使用c文件或cpp文件时,其代码相同
提前谢谢
Amichai请提供入口点 下面是一个例子
[DllImport("lib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "next", CharSet = CharSet.Ansi)]
static extern int next(int n);
希望能有帮助 请提供入口点 下面是一个例子
[DllImport("lib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "next", CharSet = CharSet.Ansi)]
static extern int next(int n);
希望能有帮助 > P>你试图做的是制作蹦床功能,以使C++对象的使用变得更为透明。 你所经历的被称为符号扭曲。它是一种特定于c++的方式,用于命名动态库和可执行文件中的符号(如函数),以启用多态性 您必须在库代码中使用
extern“C”
语句来指定要取消损坏效果,如下所示:
extern "C" __declspec(dllexport)
int next(int n)
{
return n + 1;
}
<关于这个< P>你想做的是做蹦床功能,把C++对象的使用外部化。 你所经历的被称为符号扭曲。它是一种特定于c++的方式,用于命名动态库和可执行文件中的符号(如函数),以启用多态性 您必须在库代码中使用
extern“C”
语句来指定要取消损坏效果,如下所示:
extern "C" __declspec(dllexport)
int next(int n)
{
return n + 1;
}
更多关于这方面的信息请发布您的代码。我不明白您的意思cpp@wdosanjos谢谢我在问题中添加了我的代码。你的C代码呢?@wdosanjos,我也添加了C代码。谢谢。请发你的密码。我不明白你的意思cpp@wdosanjos谢谢我在问题中添加了我的代码。你的C代码呢?@wdosanjos,我也添加了C代码。谢谢,非常感谢。帮了我很多忙。我帮了大忙