Joh*_*ohn 2 c# translation c++-cli dllimport static-classes
我有以下内容,我不能转移围绕DllImport的错误
#include "stdafx.h"
#include <msclr/auto_gcroot.h>
using namespace System;
using namespace System::Diagnostics;
using namespace System::Runtime::InteropServices;
using namespace System::Threading;
using namespace System::Collections::Generic;
using namespace System::Text;
namespace WinFlix
{
class FlickWin
{
[DllImport("user32.dll")]
extern "C" bool SetForegroundWindow(IntPtr hWnd);
Run Code Online (Sandbox Code Playgroud)
我一直在从C#转换这个类,它是一个static类,在C++ .NET中不可用.我的新C++项目是"CLR控制台应用程序"类型.
我明白了
错误C2059:语法错误:'string'
和
错误C2238:';'之前的意外标记
都指的是'extern"C"'行.
我已经搜索过我之前的工作,虽然我能胜任C++/CLI,但我之前不必调用这样的WinAPI函数.这两个错误都是在打我: - /
TBH,这件事耗尽了我的耐心而我删除了它,可以回去重新创建它,但我更喜欢修复我的C#而不是.尽管如此,请帮助赞赏以供参考
外部"C"不适合DllImport.这是错误的根源.
问题是你在一个类中声明你的P/invoke.据我所知,在C++中,它们应该被声明为任何类之外的自由函数.我没有从C++/CLI找到很多关于P/invoke的文档,可能是因为C++/CLI不需要P/invoke.
您不需要使用C++/CLI进行P/invoke,因为编译器可以包含标准C++头文件并链接到本机库.只需包含windows.h并无需进一步调用Win32 API即可.这是C++/CLI的最佳点之一.