环境: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.
}
}
答案 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