这个很基础,我如何从 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();
关于c# - 使用 DllImport 调用 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955734/