由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 如何把Linux平台下C++源代码转换到 windows平台下编译?
相关主题
桌面系统你们觉得怎么样还能更方便?请推荐一linux
新手问一个关于kernel开发的问题把Windows界面整得像Linux
中國企業沒有人真正有戰略眼光的怀旧,帖老的Windows和Linux桌面截图
如何在一个windows或者mac的界面下实现linux环境?终于鼓动mm扔掉vista成功
Linux/crossplatform GUI programming environments in C/C++(wxWindows, Qt)装了一个ubuntu,其界面和windows 看着差不多
LINUX下的ECLIPSE反应很迟钝。不好用。有同感么大家Process and Thread
请教Windows下C++编程转到Linux下要学些什么?What is the biggest diff between Win and Linux?
原来MAC是BSD的一支?哪些公司支持linux
相关话题的讨论汇总
话题: c++话题: windows话题: linux话题: 头文件话题: 平台
进入Linux版参与讨论
1 (共1页)
j*******o
发帖数: 246
1
请教各位一个问题:老板让我把一个很大的linux工程转换成c++,然后再融入我们自己
windows平台下的代码中。我一开始就被复杂的头文件给难住了,感觉linux下头文件的
路径关系和windows下的不一样。而且代码页不是放在一起的。各位有没有什么建议?
我是EE的PhD,编程很一般,所以没啥好想法。。。
r*****z
发帖数: 906
2
没有什么自动的办法,硬来吧

【在 j*******o 的大作中提到】
: 请教各位一个问题:老板让我把一个很大的linux工程转换成c++,然后再融入我们自己
: windows平台下的代码中。我一开始就被复杂的头文件给难住了,感觉linux下头文件的
: 路径关系和windows下的不一样。而且代码页不是放在一起的。各位有没有什么建议?
: 我是EE的PhD,编程很一般,所以没啥好想法。。。

j*******o
发帖数: 246
3
好几百头文件。。。超大一个机器人控制系统。。。要杀人啊。。。

【在 r*****z 的大作中提到】
: 没有什么自动的办法,硬来吧
N****w
发帖数: 21578
4
有些是两边都有的,比如 stdio.h

【在 j*******o 的大作中提到】
: 好几百头文件。。。超大一个机器人控制系统。。。要杀人啊。。。
a9
发帖数: 21638
5
cygwin?

【在 j*******o 的大作中提到】
: 请教各位一个问题:老板让我把一个很大的linux工程转换成c++,然后再融入我们自己
: windows平台下的代码中。我一开始就被复杂的头文件给难住了,感觉linux下头文件的
: 路径关系和windows下的不一样。而且代码页不是放在一起的。各位有没有什么建议?
: 我是EE的PhD,编程很一般,所以没啥好想法。。。

j*******o
发帖数: 246
6
这么简单的我还是知道。基本的C++编程知识还是有的。问题是他有一些头文件,如
#include "filters/mean.h"
在windows下根本找不到。。。感觉文件系统都是不一样的。

【在 N****w 的大作中提到】
: 有些是两边都有的,比如 stdio.h
j*******o
发帖数: 246
7
要把代码融入到自己的windows平台下的程序中。。。所以cygwin不行。

【在 a9 的大作中提到】
: cygwin?
N****w
发帖数: 21578
8
linux 下的都有源码。。全搬过去编译就是了

【在 j*******o 的大作中提到】
: 这么简单的我还是知道。基本的C++编程知识还是有的。问题是他有一些头文件,如
: #include "filters/mean.h"
: 在windows下根本找不到。。。感觉文件系统都是不一样的。

r*****z
发帖数: 906
9
filters/mean.h意味着含有这条include指令的文件和一个叫filters的目录平级,
而该目录下有mean.h这个文件。这样的目录结构当然要保留了
问题比较大的在于那些linux平台特有的头文件,包括一些linux系统调用的头文件和
GUI相关的。这二者,尤其是后者,才是你移植起来的最大障碍

【在 j*******o 的大作中提到】
: 这么简单的我还是知道。基本的C++编程知识还是有的。问题是他有一些头文件,如
: #include "filters/mean.h"
: 在windows下根本找不到。。。感觉文件系统都是不一样的。

S*A
发帖数: 7142
10
这个恐怕要一点一点自己改。
Linux 的头文件有很多在 windows 下面编译不过去的。
就算编译过去了到了 linking 那一部也可能会说 symbol 找不到。
你就看缺什么把缺的移过去。
应该也没有那么可怕,因为很多基础的头文件搞定了
以后,很多文件都可以共享这个结果的。虽然有几百
个文件,可能需要改动的部分并没有那么多。
相关主题
LINUX下的ECLIPSE反应很迟钝。不好用。有同感么大家请推荐一linux
请教Windows下C++编程转到Linux下要学些什么?把Windows界面整得像Linux
原来MAC是BSD的一支?怀旧,帖老的Windows和Linux桌面截图
进入Linux版参与讨论
N****w
发帖数: 21578
11
lz 肯定搞不定
找个 cs 的人合作一下比较好

【在 r*****z 的大作中提到】
: filters/mean.h意味着含有这条include指令的文件和一个叫filters的目录平级,
: 而该目录下有mean.h这个文件。这样的目录结构当然要保留了
: 问题比较大的在于那些linux平台特有的头文件,包括一些linux系统调用的头文件和
: GUI相关的。这二者,尤其是后者,才是你移植起来的最大障碍

r****t
发帖数: 10904
12
这种事学生物的都能搞,没有 GUI 的不是很难。

【在 N****w 的大作中提到】
: lz 肯定搞不定
: 找个 cs 的人合作一下比较好

i**h
发帖数: 424
13
Compile code into a DLL with the help from cygwin (all required posix libs
can be statically linked). Then call the DLL from your win32 main program.
S*A
发帖数: 7142
14
I don't think that is going to work. The gcc C++ symbol naming
is not even compatible with different g++ versions, not to
mention MS C. You can link it, but you can't reference the
C++ symbol correctly.

【在 i**h 的大作中提到】
: Compile code into a DLL with the help from cygwin (all required posix libs
: can be statically linked). Then call the DLL from your win32 main program.

i**h
发帖数: 424
15
There is always chance OP doesn't need access to individual classes or
members but just some global functions (oftentimes it's true). In that case
no C++ classes need to be exported. Quite a few GNU projects are ported to
win32 in this way.

【在 S*A 的大作中提到】
: I don't think that is going to work. The gcc C++ symbol naming
: is not even compatible with different g++ versions, not to
: mention MS C. You can link it, but you can't reference the
: C++ symbol correctly.

S*A
发帖数: 7142
16
If the source code is writtne in C++, then it needs to have
C API in order to do that. If there is no C API, you have to write
one.
BTW, I think you want to do that in mingw instead of gywin. All
cygwin compile require cygwin.dll. I don't think you can compile
in cywin and static link cygwin.dll. I did not try it myself.
Any one knows better please correct me.

case

【在 i**h 的大作中提到】
: There is always chance OP doesn't need access to individual classes or
: members but just some global functions (oftentimes it's true). In that case
: no C++ classes need to be exported. Quite a few GNU projects are ported to
: win32 in this way.

h***i
发帖数: 1970
17
哪那么容易,看代码复杂程度,两个系统不一样的东西太多了,随便举例,windows没
fork,没pthread(这个倒是可以找个open source的),很多posix的东西windows都没有
,你以为为了支持多系统的程序,那些ifdef是写着玩的? 计算机系能都搞定的都不多。

【在 r****t 的大作中提到】
: 这种事学生物的都能搞,没有 GUI 的不是很难。
r****t
发帖数: 10904
18
多线程多进程是要多点。楼主是 C++, 不是 C, 不一定就涉及这些。

多。

【在 h***i 的大作中提到】
: 哪那么容易,看代码复杂程度,两个系统不一样的东西太多了,随便举例,windows没
: fork,没pthread(这个倒是可以找个open source的),很多posix的东西windows都没有
: ,你以为为了支持多系统的程序,那些ifdef是写着玩的? 计算机系能都搞定的都不多。

r****t
发帖数: 10904
19
这些是你那个系统自己带的,在 windows 里面是找不到。

【在 j*******o 的大作中提到】
: 这么简单的我还是知道。基本的C++编程知识还是有的。问题是他有一些头文件,如
: #include "filters/mean.h"
: 在windows下根本找不到。。。感觉文件系统都是不一样的。

d*********8
发帖数: 2192
20
概念要清楚。
头文件至少有三类。
system/kernel api, 比如read() write()。WINDOWS是支持大部分POSIX的,所以不用
担心。但是除了POSIX之外,还有很多LINUX/UNIX独有的。比如fork()。你不用CYWIN的
话,想移植这个跟自己做个CYWIN也差不了多少了。也可以用一些可移植的库,比如
APACHE 的APR, poco等等,但是估计要大动源代码了。
第二类 c runtime
这个所有C/C++编译器都支持,只是各家的扩展略有不同。比如STDIO.H就是这类。
第三类:程序自己的东西,比如filter\mean.h这个就得你自己去修改编译参数,让编
译器找到这个文件。
总之,不用CYWIN或者可移植库,假定源代码在20000行的话,工作量跟你重新写差不多。
你可以参考那些在UNIX/WINDOWS下都有的开源软件,比如squid, apache看看他们是怎
么做的。
相关主题
终于鼓动mm扔掉vista成功What is the biggest diff between Win and Linux?
装了一个ubuntu,其界面和windows 看着差不多哪些公司支持linux
Process and Thread你们谁在一年之内从来没碰过Windows?
进入Linux版参与讨论
S*A
发帖数: 7142
21
说的都很对,
就是 port 20K LOC 不用cygwin 和重写差不多?这个我觉得不至于。
porting 的很多问题都是纸老虎,刚开始编译几万个错误。
一些基本的东西 fix 了以后错误就急剧下降了。因为很多都是抱怨
同样的错。
Open source 很多都是用 autoconf/automake 那一套的,但是如果就
是 port到 windows 的话,应该用不上。 automake 超级复杂,我很不
喜欢用。我自己的项目都不用 automake 的。手写 Makefile 好多了。

【在 d*********8 的大作中提到】
: 概念要清楚。
: 头文件至少有三类。
: system/kernel api, 比如read() write()。WINDOWS是支持大部分POSIX的,所以不用
: 担心。但是除了POSIX之外,还有很多LINUX/UNIX独有的。比如fork()。你不用CYWIN的
: 话,想移植这个跟自己做个CYWIN也差不了多少了。也可以用一些可移植的库,比如
: APACHE 的APR, poco等等,但是估计要大动源代码了。
: 第二类 c runtime
: 这个所有C/C++编译器都支持,只是各家的扩展略有不同。比如STDIO.H就是这类。
: 第三类:程序自己的东西,比如filter\mean.h这个就得你自己去修改编译参数,让编
: 译器找到这个文件。

z*******6
发帖数: 133
22
试试用 automake,cmake等, 先把 project/solution 搞出来。
然后参考刚才上上贴对header file 的处理。一步步来,有些头文件对应的列表,可以
在网络上搜搜,比如 unistd.h, sys/*.h, dirent.h; 第三方的库也要准备好。
几个问题如果系统中没有用的话,还是可以很快完成的。
1. GUI,如果有motif xwin 等的界面,试试用 QT
2. 如果有opengl, 需要用 glew, regular expression 也需要单独的库
3. 如果有遇到share memory/semaphore 的部分,需要重新做
4. 如果有文件io 的低级操作的部分,要重来
5. 如果有遇到 signal 的处理的部分,估计要重来。
6. 。。。
L*1
发帖数: 11537
23

Agree. I also do not like automake stuff, making simple things more
complicated for people like me.

【在 S*A 的大作中提到】
: 说的都很对,
: 就是 port 20K LOC 不用cygwin 和重写差不多?这个我觉得不至于。
: porting 的很多问题都是纸老虎,刚开始编译几万个错误。
: 一些基本的东西 fix 了以后错误就急剧下降了。因为很多都是抱怨
: 同样的错。
: Open source 很多都是用 autoconf/automake 那一套的,但是如果就
: 是 port到 windows 的话,应该用不上。 automake 超级复杂,我很不
: 喜欢用。我自己的项目都不用 automake 的。手写 Makefile 好多了。

1 (共1页)
进入Linux版参与讨论
相关主题
哪些公司支持linuxLinux/crossplatform GUI programming environments in C/C++(wxWindows, Qt)
你们谁在一年之内从来没碰过Windows?LINUX下的ECLIPSE反应很迟钝。不好用。有同感么大家
win下面ssh linux用什么好?请教Windows下C++编程转到Linux下要学些什么?
W7内运行Linux的最佳方案?原来MAC是BSD的一支?
桌面系统你们觉得怎么样还能更方便?请推荐一linux
新手问一个关于kernel开发的问题把Windows界面整得像Linux
中國企業沒有人真正有戰略眼光的怀旧,帖老的Windows和Linux桌面截图
如何在一个windows或者mac的界面下实现linux环境?终于鼓动mm扔掉vista成功
相关话题的讨论汇总
话题: c++话题: windows话题: linux话题: 头文件话题: 平台