在c#代码中使用cpp 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文件时,其代码

我尝试在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文件时,其代码相同

提前谢谢
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代码。谢谢,非常感谢。帮了我很多忙。我帮了大忙