하드웨어/rfid_nfc_smartcard

libpcsclite on cpp

구차니 2025. 3. 18. 22:57

음.. 흐음...

char *의 포인터를 넘겨줘야 하는데 에러가 난다 머지?

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);

 

그래서 강제로 하면 이렇게 에러가 나는데

error: cannot convert ‘char**’ to ‘LPSTR’ {aka ‘char*’}
  103 |     rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);
      |                                                   ^~~~~~~~~~~
      |                                                   |
      |                                                   char**

 

아래처럼 변수를 미리 선언해서 자동할당 하지 않게 하거나

char mszReaders[255];
DWORD dwReaderLen = sizeof(mszReaders); // SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, mszReaders, &dwReaderLen);

 

아래 처럼 강제 형변환을 해주어서 2중 포인터가 아닌 것으로 속여주면 된다.

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, NULL, (char*)&mszReaders, &dwReaderLen);

 

해결은 되었는데 해결책 같은 느낌이 하나도 안드네..