我已经成功构建了一个可以在Linux上使用Qt读取Mifare 1K卡的程序。所以现在,我希望它可以在Windows上运行。据我了解,Windows上没有PCSC-Lite端口,我需要使用Windows SDK中的winscard。我已经下载了它,并且在Windows(使用MingW)中从我的Qt中获得了许多未定义的引用错误。例如:
release/ReadCard.o:ReadCard.cpp :(。text + 0x48e):对`pcsc_stringify_error'的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x5e9):对`pcsc_stringify_error'的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x7ed):对`pcsc_stringify_error'的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x2e56):对“SCardListReaderGroups”的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x3adc):对“SCardListReaders”的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x3cc6):对“SCardListReaders”的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x3f88):未定义对“SCardGetStatusChange”的引用
release/ReadCard.o:ReadCard.cpp :(。text + 0x4274):对“SCardConnect”的 undefined reference
release/ReadCard.o:ReadCard.cpp :(。text + 0x4d1b):对`SCardGetStatusChange的 undefined reference
我也尝试过在项目中指定这些库,但仍然失败。
LIBS + = -lwinscard -lpcsclite WinSCard.Lib
最佳答案
从理论上讲,pcsc-lite是Windows PC/SC堆栈到UNIX计算机的端口。 Windows PC/SC实现是pcsc-lite模仿的“引用实现”。并非所有Windows SCard功能都在pcsc-lite中实现,甚至有细微的差异,记录在pcsc-lite documentation中
不了解有关Qt的细节,但请注意以下几点:
pcsc_stringify_error
是pcsc-lite的特定功能。 Windows 除了
pcsc_stringify_error
以外,您的问题是使用通用Windows链接和Qt(qmake?)构建系统。关于windows - Windows上的PCSC-Lite代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1777713/