I've managed to create a project for pdcurses in Visual Studio 2005 Express and have been able to compile it successfully.
The pdcurses.lib file seems to work just fine except when it comes to displaying characters from the Alternate Character Set. I'm particularly interested in the ACS_BLOCK character.
For example, the following program demonstrates the problem:
int main ()
addstr ("This should be a block character -> ");
Running the program displays the following:
This should be a block character -> U
The ACS_BLOCK character consistently is displayed as a 'U'. I've also tried ACS_HLINE (displayed as 'Ä') and ACS_VLINE (displayed as '3').
Previously, I've used a pdcurses DLL that works fine, but I wanted to have a static library to use with VS2005 Express.
Is there anything I'm doing wrong at compile-time? Any suggestions?
Hmm... I dunno... Are you running the program in a nonstandard console? Using an unusual font? Or is it the locale? Doesn't sound like a problem with how you compiled it, anyway.
If you built it from source, I assume you built the testcurs demo program? What does it show in the ACS Test?
The only suggestion I can think of is to build the wide-character version ("make -f vcwin32.mak WIDE=Y") and try that. It uses the Unicode versions of the console functions.
P.S. The more I think about it, it really sounds like your console is set to an "ANSI" code page, while the narrow-character version of PDCurses is expecting OEM. If that's the case, then using the wide-character build should fix it.
Had the same problem with visual studio 2010. If I link statically against compiled by me pdcurses lib, I have "3" instead of "|" character. But if I link against pre-compiled pdcurses lib - every thing fine.
Solution is - in properties of library project set "Character set" property to "Not set" instead of "Unicode character set"