大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
在win7上面编译Sigar,由于开发环境及编译器版本不同,出现了许多问题。
开发环境:
win7, CMAKE 3.11.0-rc2, jdk 1.8, perl5, ant 1.10.1, vs2015
1. 编译之前要运行 %vs_root%\VC\vcvarsall.bat amd64,设置vs的编译依赖环境, 64位的windows一定要加上参数 amd64
2. vs2015需要根据https://github.com/hyperic/sigar/issues/111的建议修改源码,解决snprintf宏定义冲突问题
diff --git a/src/os/win32/sigar_os.h b/src/os/win32/sigar_os.h index 1499236..231f8ae 100755 --- a/src/os/win32/sigar_os.h +++ b/src/os/win32/sigar_os.h @@ -25,7 +25,9 @@ #ifdef MSVC #define WIN32_LEAN_AND_MEAN +#if _MSC_VER < 1900 #define snprintf _snprintf +#endif #if _MSC_VER <= 1200 #define SIGAR_USING_MSC6 /* Visual Studio version 6 */ #define HAVE_MIB_IPADDRROW_WTYPE 0
3. vs2015需要根据https://github.com/hyperic/sigar/issues/112的建议修改源码,解决wcstok函数签名不一致问题,也可以使用 _wcstok代替原来的wcstok,以调用老版函数。
--- a/bindings/java/src/jni/win32/eventlog.c 2010-04-28 17:00:00.000000000 -0400 +++ b/bindings/java/src/jni/win32/eventlog.c 2018-01-23 15:55:39.605908161 -0500 @@ -130,7 +130,8 @@ } } - ptr = wcstok(msgdll, FILESEP); + LPWSTR ex; + ptr = wcstok(msgdll, FILESEP, &ex); while (ptr) { HINSTANCE hlib; @@ -150,7 +151,7 @@ break; } } - ptr = wcstok(NULL, FILESEP); + ptr = wcstok(NULL, FILESEP, &ex); } if (msgbuf) {
这样在bindings/java目录下面执行
ant clean
ant
就可以编译成功。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/206850.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...