使用 DllImport 调用 C++ 函数

2024-03-10

这是基本的,如何从 C# DllImport 调用下面的函数 SubscribeNewsFeed?

class LogAppender : public L_Append
{
public:
    LogAppender()
        : outfile("TestLog.txt", std::ios::trunc | std::ios::out)
        , feedSubscribed(false)
    {
        outfile.setf(0, std::ios::floatfield);
        outfile.precision(4);
    }



    void SubscribeNewsFeed()
    {
        someOtherCalls();
    }

};

我无法弄清楚在我的 C# 程序中使用 DllImport 时如何包含类名:

 class Program
    {

        [DllImport("LogAppender.dll")]
        public static extern void SubscribeNewsFeed();

        static void Main(string[] args)
        {
            SubscribeNewsFeed();
        }
    }

PInvoke 不能用于以这种方式直接调用 C++ 函数。相反,您需要定义一个extern "C"函数调用 PInvoke 函数并将 PInvoke 调用到该函数中。此外,您无法 PInvoke 进入类实例方法。

C/C++ 代码

extern "C" void SubscribeNewsFeedHelper() {
  LogAppender appender;
  appender.SubscribeNewsFeed();
}

C#

[DllImport("LogAppender.dll")]
public static extern void SubscribeNewsFeedHelper();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 DllImport 调用 C++ 函数 的相关文章

随机推荐