Sigar 编译笔记「建议收藏」

Sigar 编译笔记「建议收藏」在win7上面编译Sigar,由于开发环境及编译器版本不同,出现了许多问题。开发环境:win7,CMAKE3.11.0-rc2,jdk1.8,perl5,ant1.10.1,vs20151.编译之前要运行%vs_root%\VC\vcvarsall.batamd64,设置vs的编译依赖环境,64位的windows一定要加上参数amd642.vs2015需要根据https…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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

Jetbrains全家桶1年46,售后保障稳定

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 

就可以编译成功。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206850.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 8中的::(双冒号)运算符

    Java 8中的::(双冒号)运算符IwasexploringtheJava8sourceandfoundthisparticularpartofcodeverysurprising:我正在探索Java

    2022年7月7日
    23
  • linux fork函数浅析

    linux fork函数浅析

    2021年12月5日
    70
  • &0xffffffff(0x08)

    答案是-2为什么呢这里涉及到有符号整型数的补码,正数的补码与原码相同。负数的补码,将其原码除符号位外的所有位取反后加101111111+01111111=11111110符号位溢出了取反10000001再加110000010结果就得-2在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇怪为什么设一个这么奇怪的十六进制数,一…

    2022年4月12日
    42
  • JS es6的Class类详解

    JS es6的Class类详解文章目录JSes6的Class类详解class基本语法Class的基本语法之constructorClass的基本语法之类的调用方式Class的基本语法之getter和setterClass的基本语法之类的属性名Class的基本语法的特别注意点Class的静态属性和方法Class的私有方法和私有属性构造函数的新属性构造函数的新属性JSes6的Class类详解class基本语法JavaScript语言中,生成实例对象的传统方法是通过构造函数和原型的组合模式.ES6提供了更接近传统语言(java)

    2022年6月10日
    37
  • java中main方法是怎么运行的?

    java中main方法是怎么运行的?学过java的都知道main方法是学习java的开始,也是程序的入口,不过你有多少个类或程序,线程,他们的入口方法都是main()main方法是一个静态的方法,所以这个方法是属于类的,而不是对象的;在main()方法中,参数类型是“String[]args”,意味着在启动Java应用的同时,传递一个String类型的数组来定制化应用的初始化属性。执行过程:现在

    2022年5月31日
    62
  • pycharm激活码2021【注册码】[通俗易懂]

    pycharm激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号