Hmmm... what you're looking for is a cross-compiler. Basically the cross-compiler knows the kind of output it needs to produce for a platform, even though the compiler isn't running on that platform. I found
these notes on using MinGW and Cygwin for windows cross-compiling on Linux. (Though I haven't done this myself...)
If you have access to a Windows machine, you don't have to use VC++... I've always used
MinGW on windows. They even have an example of how to create a JNI DLL in their
FAQ.