JNI监听全局鼠标钩子dll用VS编译显示发现重复定义,如何修改


在做一个程序,鼠标右键按下时记录鼠标坐标,右键释放时停止记录。
按照 http://dengpeng.sensorapp.net/?p=495 的方法做了一个钩子,在Code::Blocks下编译通过,但在Eclipse下调用时显示:
es.png
(Code::Blocks已在编译属性里勾选上AMD64选项:
cbsetting.png
);又用VS 2010编译,显示错误:
vs.png
vssetting.png

我对于JNI不太熟悉,请教各位我应该如何修改?为什么CodeBlocks编译通过了而VS显示“发现重复定义”?
提前感谢!

另外:如果想用Java监听全局鼠标事件,还有没有除此之外更简便的方法?

java jni dll visual-studio

宮澤有紀寧 10 years, 6 months ago

1. -march 参数不影响目标文件是否为64位(主要影响指令集,比如SSE, 3DNOW支持), -m32 -m64 这两个参数才与是否生成32位或64位程序有关。你需要使用64位的MinGW编译器(可以使用这个发行版: http://tdm-gcc.tdragon.net/ )。另外,还需要配置一下Code::Blocks使用64位的编译器。

2. MFC DLL不该有DllMain入口(MFC有自己的),请不要在DLL中使用MFC(你提供的例子完全不需要用MFC)。绕过该限制的方法也有,参考: http://support.microsoft.com/kb/14879...

SiroXX answered 10 years, 6 months ago

Your Answer