让非托管 C++ 代码调用调用 C# 代码的托管 C++ 代码
本文关键字:代码 调用 C++ | 更新日期: 2024-10-31 09:18:53
我无法弄清楚如何引用从非托管 C++ 代码调用 C# 代码的托管 C++ 代码。让我抛出几个场景:
- 我有我的非托管代码引用并调用我的托管代码,我的托管代码对我的 c# 代码的调用被注释掉,构建和工作正常。我取消注释我的 c# 代码,我现在收到编译器错误,说我的 c# 命名空间不存在。
- 在我的非托管代码中,我注释掉了对托管代码的引用和调用。我的托管代码调用我的 c# 代码。构建和运行都很好...你从这里得到图片。
编译器错误为 C2653。
这是我正在做的事情:
非托管 c++ 代码:我已将链接器设置为包含我的托管 c++ lib 文件。
#include "ManagedCpp.h"
ManagedCpp::foo();
托管C++:
extern "C" __declspec(dllexport) void __stdcall foo()
{
CssCode::bar();
}
C#
public static void bar()
{
// From here it initializes some stuff from the registry
// into some data structures which I plan on marshaling
// back with other method calls, which I know involves placing
// things on the stack that can be returned normally to the
// managed c++ code which then will need to be marshed back to the
// unmanaged c++ code.
// All code will be static.
}
我做错了什么?据我所知,我需要从非托管代码中隐藏我的 c# 调用,但我不太确定如何做到这一点。
空头错误。
我将从托管 c++ 到标头中的 c# 代码的调用放在标头中。哎 呦。现在一切似乎都很好!