C++ 如何为Windows构建jcal?

C++ 如何为Windows构建jcal?,c++,c,windows,compilation,C++,C,Windows,Compilation,我需要此项目的Windows可执行文件: < >我尝试将所有.h和.c文件添加到一个C++ QT创建者中的一个控制台非QT C++项目中,但是它发出了很多错误,如:>JDe>jDe.C:- 1错误:未定义的引用JCalalTimeR''< /Cord> 我还向项目中添加了未知文件,如jasctime\u r.3 如何在Windows中编译此项目?好的,如果您使用它的目标GNU构建系统,它确实可以工作,但是您确实需要一些代码更改来绕过Windows上缺少的函数 localtime\u r()和

我需要此项目的Windows可执行文件:

< >我尝试将所有.h和.c文件添加到一个C++ QT创建者中的一个控制台非QT C++项目中,但是它发出了很多错误,如:>JDe>jDe.C:- 1错误:未定义的引用JCalalTimeR''< /Cord> 我还向项目中添加了未知文件,如
jasctime\u r.3


如何在Windows中编译此项目?

好的,如果您使用它的目标GNU构建系统,它确实可以工作,但是您确实需要一些代码更改来绕过Windows上缺少的函数

  • localtime\u r()
    gmtime\u r()
    可以替换为
    localtime\u s()
    gmtime\u s()
    并交换参数
  • 对于
    strtime()
    ,您需要提供一个实现,如果您修复
    #includes
    并添加一个
    #define TM#YEAR#u BASE 1900
    ,以下是一个有效的实现
将固定的
strtime.c
放入
sources/libjalali
目录,并应用以下修补程序:

diff--git a/sources/configure.ac b/sources/configure.ac
索引e623ec9..409d9e7 100644
---a/sources/configure.ac
+++b/sources/configure.ac
@@-66,4+66,9@@如果测试$installpyjalali=“是”;然后
fi
AM_有条件([WANT_PYJALALI],[test$installpyjalali=“yes”])
+案例$host in
+*mingw*)targetsMingw=是;;
+以撒
+AM_条件([MINGW],[test x$targetismingw=xyes])
+
交流输出
diff--git a/sources/libjalali/Makefile.am b/sources/libjalali/Makefile.am
索引078c68a..64ef85d 100644
---a/sources/libjalali/Makefile.am
+++b/sources/libjalali/Makefile.am
@@ -5,6 +5,9 @@
libltlibraries=libjalali.la
libjalali_la_SOURCES=jalali.c jtime.c
+如果明
+libjalali_la_SOURCES+=strtime.c
+恩迪夫
# 0:0:0
#0->接口版本,每次更改API时都会更改
diff——git a/sources/libjalali/jalali.c b/sources/libjalali/jalali.c
索引49fc43f..6e3bdd9 100644
---a/sources/libjalali/jalali.c
+++b/sources/libjalali/jalali.c
@@ -28,6 +28,10 @@
#包括“jalali.h”
#包括“jconfig.h”
+#ifdef_WIN32
+#定义localtime_r(timep,result)localtime_s((result),(timep))
+#恩迪夫
+
/*
*假设*factor*number*lo*为一*hi*,集群*lo*s并改变
*你好。最后:
@@-49,7+53,9@@const int jalali_month_len[]={31,31,31,30,30,30,
累计月数[]等于{0,31,62,93,124,155,186,
216, 246, 276, 306, 336 };
+#ifndef\u WIN32
外部字符*tzname[2];
+#恩迪夫
/*
*Jalali闰年指示函数。此处使用的算法
diff——git a/sources/libjalali/jtime.c b/sources/libjalali/jtime.c
索引319dbdd..ba8ec1a 100644
---a/sources/libjalali/jtime.c
+++b/sources/libjalali/jtime.c
@@ -27,6 +27,11 @@
#包括“jalali.h”
#包括“jtime.h”
+#ifdef_WIN32
+#定义localtime_r(timep,result)localtime_s((result),(timep))
+#定义gmtime_r(timep,result)gmtime_s((result),(timep))
+#恩迪夫
+
const char*GMT\u ZONE=“UTC”;
const char*GMT_ZONE_fa=“گینویچ”;
const char*jalali_months[]={“Farvardin”、“Ordibehesht”、“Khordaad”,
@@-65,7+70,9@const char*tzname_fa[2]={“زززززس㶪ی”、“ز㶪㶪㶪㶪㶪㶪”
静态字符in_buf[MAX_buf_SIZE]={0};
_jtm中的静态结构jtm;
+#ifndef\u WIN32
外部字符*tzname[2];
+#恩迪夫
jalali月内外部施工[];
_jasctime中的void(const struct jtm*jtm,char*buf)
diff——git a/sources/libjalali/jtime.h b/sources/libjalali/jtime.h
索引fd658f1..48b4d9a 100644
---a/sources/libjalali/jtime.h
+++b/sources/libjalali/jtime.h
@@-56,6+56,10@@extern struct jtm*jlocaltime\r(const time\t*timep,struct jtm*result);
外部内部jalali_至_farsi(字符*buf,大小\u t n,内部填充,字符*pad,内部d);
+#ifdef_WIN32
+extern char*strptime(常量char*buf、常量char*fmt、结构tm*tm);
+#恩迪夫
+
#ifdef_uucplusplus
}
#恩迪夫
diff——git a/sources/src/jdate.cb/sources/src/jdate.c
索引8a47e19..cae0329 100644
---a/sources/src/jdate.c
+++b/sources/src/jdate.c
@@ -34,6 +34,11 @@
#包括“./libjalali/jtime.h”
#包括“jdate.h”
+#ifdef_WIN32
+#定义localtime_r(timep,result)localtime_s((result),(timep))
+#定义gmtime_r(timep,result)gmtime_s((result),(timep))
+#恩迪夫
+
外部字符*optarg;
/*
然后,获取、启动其shell并安装软件包:

pacman -S mingw32/mingw-w64-i686-gcc msys/autoconf msys/automake msys/libtool
我想这应该足够了

现在,您可以使用
sources
目录中的以下命令来构建它:

autoreconf -i
./configure
make

好的,如果您使用它的目标GNU构建系统,它确实可以工作,但是您确实需要一些代码更改来绕过windows上缺少的函数

  • localtime\u r()
    gmtime\u r()
    可以替换为
    localtime\u s()
    gmtime\u s()
    并交换参数
  • 对于
    strtime()
    ,您需要提供一个实现,如果您修复
    #includes
    并添加一个
    #define TM#YEAR#u BASE 1900
    ,以下是一个有效的实现
将固定的
strtime.c
放入
sources/libjalali
目录,并应用以下修补程序:

diff--git a/sources/configure.ac b/sources/configure.ac
索引e623ec9..409d9e7 100644
---a/sources/configure.ac
+++b/sources/configure.ac
@@-66,4+66,9@@如果测试$installpyjalali=“是”,则
fi
AM_有条件([WANT_PYJALALI],[test$installpyjalali=“yes”])
+案例$host in
+*mingw*)targetsMingw=是;;
+以撒
+AM_条件([MINGW],[test x$targetismingw=xyes])
+
交流输出
diff--git a/sources/libjalali/Makefile.am b/sources/libjalali/Makefile.am
索引078c68a..64ef85d 100644
---a/sources/libjalali/Makefile.am
+++b/sources/libjalali/Makefile.am
@@ -5,6 +5,9 @@
libltlibraries=libjalali.la
libjalali_la_SOURCES=jalali.c jtime.c
+如果明
+libjalali_la_SOURCES+=strtime.c
+恩迪夫
# 0:0:0
#0->接口版本,在更改时更改