main.cpp(11):错误C2059:语法错误:'字符串'

时间:2019-12-17 06:45:50

标签: c++ visual-studio dllimport

环境:Visual Studio 2008,C ++ 我正在将条形码打印机[TSC210]与控制器[NXP A4]串行连接,查看了其他帖子,但不确定是什么引起了该问题,我是C ++的初学者。谁能建议如何解决此错误?

获取错误和警告情况,例如:

1] main.cpp(11) : error C2059: syntax error : 'string'

2] main.cpp(11) : warning C4091: '__declspec(dllimport)' : ignored on left of 'int' when no variable is declared

我有以下代码

#include <windows.h>

#define BUFFER_SIZE   32

#define Naked __declspec(naked)
#define DllImport   __declspec( dllimport )

namespace TSCLIB
{
  DllImport("TSCLIB.dll", EntryPoint = "about")
  int about();
}

BOOL PortOpen(HANDLE *port, DWORD baudRate)
{
  DCB portDCB;                                              ///< COM port configuration structure.
  BOOL returnValue = FALSE;
  COMMTIMEOUTS comTimeOut;

  /// Opens interface to reader.  

  /// COM Port Configuration.

  /// Changes the DCB structure settings.

  /// Configures the port according to the specifications of the DCB structure.

  /// Gets communication time out values.

  /// Sets communication time out values.

  return TRUE;
}

BOOL PortClose(HANDLE *port)
{
  if (*port == NULL)
  {
    return FALSE;
  }
  CloseHandle(*port);
  *port = NULL;
  return TRUE;
}


int wmain(void)
{
  HANDLE portHandle;

  while (TRUE)
  {
    //  case WRITE:                 

     }
    // Closes the serial port.

  }
}

1 个答案:

答案 0 :(得分:2)

好吧,问题出在这一行:

DllImport("TSCLIB.dll", EntryPoint = "about")]

这里实际上有两个问题。第一个是该语句以']'结尾。我猜这可能只是拼写错误,而您使用了';'正确地。但是,问题还在于EntryPoint = "about"部分。您不能在C ++中调用类似的方法。我猜您想这样做:

DllImport("TSCLIB.dll", "about");

此外,正如上面的注释所指出的,您具有“;”在定义DllImport之后。最后,要在Windows上以C ++加载DLL并使用该DLL中的特定功能,应使用Win32 API函数LoadLibrary加载DLL,并使用GetProcAddress获取指向您想要的函数的指针打电话。在线上有很多示例,例如this SO post