从 C++ 调用静态 C++/CLI 方法

Call a static C++/CLI method from C++

在 C++CLI 项目中,我在事件上调用本机对象,我希望能够在触发此事件时从本机 C++ 调用 C++/CLI 函数。我目前有以下代码,但它 returns PickObjects() 不是 ManagedClass 的成员的错误。是否可以回调到静态 C++CLI 方法?

#pragma once
#include "Stdafx.h"
#include "ManagedClass.h"

namespace Unmanaged
{
    public class EventHandlers
    {
    public:
        static void OnClick(customObject* caller, void *calldata)
        {
            //call managed method, can get here from CLI
            ManagedClass::ManagedObject::PickObjects();
        }
    };
}

这是 C++CLI 代码片段,这里的一切看起来 运行 都很好:

namespace ManagedClass
{
    public ref class ManagedObject  
    {
    public:
         static void PickObjects()
         {
         //pick stuff when called
         }
    };
}

编辑:成功了,错误肯定与 Visual Studio 编译文件的方式有关。将立即更新解决方案。感谢 Matthias 的帮助。

是的,可以从另一个静态方法中调用一个静态方法。 在这种情况下,听起来您没有正确声明 ManagedClass::PickObjects()。您可以向我们展示它的代码(header 应该足够了)。

似乎 classes 没有按照正确的顺序编译。将 EventHandlers class 添加到 ManagedClass 的末尾,一切正常。

namespace ManagedClass
{
    public ref class ManagedObject  
    {
    public:
         static void PickObjects()
         {
         //pick stuff when called
         }
    };
    public class EventHandlers
    {
    public:
        static void OnClick(customObject* caller, void *calldata)
        {
            ManagedClass::ManagedObject::PickObjects();
        }
    };
}