Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有非托管的c++;代码调用管理的c++;调用c#代码的代码 我很难精确地指出如何引用托管C++代码,这些代码从非托管C++代码调用C代码。让我列举几个场景: 我有我的非托管代码引用并调用我的托管代码,我的托管代码对我的c#代码的调用被注释掉,构建和工作都很好。我取消注释我的c#代码,现在我得到编译器错误,说我的c#命名空间不存在 在非托管代码中,我注释掉引用并调用托管代码。我的托管代码调用我的c代码。构建和运行都很好。。。你可以从这里了解情况_C#_C++_Unmanaged_Managed - Fatal编程技术网

具有非托管的c++;代码调用管理的c++;调用c#代码的代码 我很难精确地指出如何引用托管C++代码,这些代码从非托管C++代码调用C代码。让我列举几个场景: 我有我的非托管代码引用并调用我的托管代码,我的托管代码对我的c#代码的调用被注释掉,构建和工作都很好。我取消注释我的c#代码,现在我得到编译器错误,说我的c#命名空间不存在 在非托管代码中,我注释掉引用并调用托管代码。我的托管代码调用我的c代码。构建和运行都很好。。。你可以从这里了解情况

具有非托管的c++;代码调用管理的c++;调用c#代码的代码 我很难精确地指出如何引用托管C++代码,这些代码从非托管C++代码调用C代码。让我列举几个场景: 我有我的非托管代码引用并调用我的托管代码,我的托管代码对我的c#代码的调用被注释掉,构建和工作都很好。我取消注释我的c#代码,现在我得到编译器错误,说我的c#命名空间不存在 在非托管代码中,我注释掉引用并调用托管代码。我的托管代码调用我的c代码。构建和运行都很好。。。你可以从这里了解情况,c#,c++,unmanaged,managed,C#,C++,Unmanaged,Managed,编译器错误是C2653 以下是我正在做的: 非托管C++代码:我已经设置链接器以包含我的托管C++ LIB文件。 #include "ManagedCpp.h" ManagedCpp::foo(); 托管C++: extern "C" __declspec(dllexport) void __stdcall foo() { CssCode::bar(); } C# 我做错了什么?据我所知,我需要对非托管代码隐藏我的c#调用,但我不太确定如何做到这一点。空脑袋的错误 我把托管C++

编译器错误是C2653

以下是我正在做的:

<强>非托管C++代码:我已经设置链接器以包含我的托管C++ LIB文件。

#include "ManagedCpp.h"

ManagedCpp::foo();
托管C++:

extern "C" __declspec(dllexport) void __stdcall foo()
{
    CssCode::bar();
}
C#

我做错了什么?据我所知,我需要对非托管代码隐藏我的c#调用,但我不太确定如何做到这一点。

空脑袋的错误


我把托管C++的调用放到头中的C代码中。哎呀。现在一切似乎都很好

提供更多的上下文。什么是编译器错误?
CssCode
类的定义是什么,即
bar()
方法?这是一个<代码>公共静态< /C>方法吗?我将编辑POST来提供更多信息。您可以在同一编译单元中混合非托管和托管C++。不需要将托管C++移到单独的DLL中。就这么说吧。另外,您可以通过非COM可见的程序集或通过CorXXX的API族直接调用非托管C++的C语言,在这种情况下,我试图与CPUMPITestTestFrand接口,因此设置我的非托管代码/CLR标志使得我必须使用内部测试引擎无法找到这些测试。所以你的第一个建议不符合我的需要。关于第二个建议,这个任务的首席工程师架构师推荐使用包装方法,原因很多,所以第二个解决方案我不能用,因为我的头脑更大。你是否从C++ DLL添加了对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.
}