构建升压C ++的WinCE [英] Build Boost C++ WinCE

查看:181
本文介绍了构建升压C ++的WinCE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我知道有类似的问题,但并不能帮助我。
我想在x86平台构建的Windows CE 6的推动作用。

I know that are similar question but doesn't help me. I want to build boost for Windows CE 6 on an x86 Platform.


我已经建立发布moded作为与成功WINCE共享库STLPort中,我还添加一些补丁和整合OpenCE时间库,实施了一些缺失的ANSI C函数。 STLPort的测试是确定的(只是用wcout,WCIN和wcerr in_avail()函数的问题,我不知道到底是哪里出了问题)。

I've build STLPort in release moded as shared library for WINCE with success, I've also add some patch and integrate the OpenCE Time library and implemented some missing ANSI C function. STLPort test is ok (just an issue with wcout, wcin and wcerr in_avail() function, I don't know exactly where is the problem).


打造提升我创建一个批处理文件,并更改用户config.jam中以这种方式。构建是好的,但似乎我编译我的Windows XP平台,而不是WinCE的。

To build boost I created a batch file and change the user-config.jam in this way. The build is ok but seems that I'm compiling for my Windows Xp Platform instead of WinCE.


升压构建系统是非常复杂的,我不理解它是如何工作的(文档不是很好,对谷歌没有太多)。升压的生成是好,但我不能运行的应用程序。似乎缺少一些DLL或嘘DLL的是错误的。我得到当我与调试attacched的信息是今夜processo all'estremita'德拉PIPE - >在管的端没有进行处理。当我尝试从目标设备启动应用程序它没有任何效果。我错了什么东西?我怎么能告诉提振使用特定的配置?

The boost build system is very complicated and I'm not understanding how it work (the documentation isn't very good and on google there's no much). The build of boost is ok but I cannot run application. It seems that is missing some DLL or that the Boos DLL's are wrong. The message I get when I'm attacched with debugger is "Nessun processo all'estremita' della PIPE" -> "No process at the end of the PIPE". When I try to launch the application from the target device it has no effect. Am I wrong something? How can I tell boost to use specific configuration?


另一个问题是,我无法看到生成日志。我不知道到底是我建立的东西。有没有办法,看看究竟是做什么?

Another problem is that i cannot see the build log. I don't know what exactly I'm building. Is there a way to see what actually is done?


我呼吁建立升压批处理文件(我启动Visual Studio 2008的外壳):

The batch file that I call to build boost (I start the shell of Visual Studio 2008):

@echo off
cls
bjam --with-chrono --with-date_time --with-thread toolset=msvc-CEPlatformName variant=release threading=multi link=shared runtime-link=shared


这是用户config.jam中位于工具/编译/ V2

This is the user-config.jam located in tools/build/v2

using msvc : CEPlatformName:
    <compileflags>-D_CRT_SECURE_NO_WARNINGS
    <compileflags>-D_CRT_SECURE_NO_DEPRECATE
    <compileflags>-DBOOST_PROTO_MAX_ARITY=10
    <compileflags>-DBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
    <compileflags>-DBOOST_MPL_LIMIT_METAFUNCTION_ARITY=10
    <compileflags>-D_WIN32_WCE=0x600
    <compileflags>-DUNDER_CE
    <compileflags>-DWINCE
    <compileflags>-Dx86
    <compileflags>-D_x86_
    <compileflags>-D_UNICODE
    <compileflags>-DUNICODE
    <linkflags>/subsystem:windowsce,6.00 
    <linkflags>/MACHINE:X86
    <linkflags>/NODEFAULTLIB:oldnames.lib
    <linkflags>/NODEFAULTLIB:libc.lib
    <linkflags>coredll.lib
    <linkflags>corelibc.lib
    <linkflags>ole32.lib
    <linkflags>oleaut32.lib
    <linkflags>uuid.lib
    <setup>C:/boost_1_53_0/CEPlatformNameConfig.bat.bat
; 


using stlport : 5.2 :
    C:/celib/stlport/stlport :
    C:/celib/stlport/bin 
;


这是为配置脚本文件

And this is the script file for configuration

@echo off
echo CONFIGURAZIONE PER LA COMPILAZIONE DI BOOST SU WINCE
echo.

rem ------------------------------------------------------------
set BOOST_DIR=c:\boost_1_53_0\boost
set PLATFORM=CEPlatformName
set TARGETCPU=x86
set OSVERSION=WCE600
set STLPORT_DIR=C:\celib\stlport
set STLPORT_INC=%STLPORT_DIR%\stlport
set STLPORT_LIB=%STLPORT_DIR%\bin\%PLATFORM%
rem ------------------------------------------------------------

if not %1==%&TARGETCPU% goto error

echo Setting Boost directory to %BOOST_DIR%
echo Setting OS Platform to %PLATFORM%
echo Setting target CPU to %TARGETCPU%
echo Setting OS Versione to %OSVERSION%
echo Setting STLPORT_INC to %STLPORT_INC%
echo Setting STLPORT_LIB to %STLPORT_LIB%

rem settin visual studio 2008 variable path
set SDKROOT=C:\Programmi\Windows CE Tools

set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_cex86;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%
set INCLUDE=%STLPORT_INC%;%PLATFORMROOT%\include\;%PLATFORMROOT%\include\%TARGETCPU%;%VCINSTALLDIR%\ce\include;%VCINSTALLDIR%\ce\atlmfc\include;%VSInstallDir%\SmartDevices\SDK\SQL Server\Mobile\v3.0;
set LIB=%STLPORT_LIB%;%PLATFORMROOT%\lib\%TARGETCPU%;%VCINSTALLDIR%\ce\ATLMFC\LIB\%TARGETCPU%;%VCINSTALLDIR%\ce\LIB\%TARGETCPU%

echo PATH at %PATH%
echo.

echo INCLUDE is %INCLUDE%
echo.

echo LIB is %LIB%
echo.

goto exit

:error
echo Invali Target CPU
goto exit

:exit
echo impostazioni avvenute con successo

修改

似乎在用户config.jam中的compileflags不起作用...或更好似乎用户config.jam中没有效果

EDIT

Seems that the compileflags in the user-config.jam has no effect... or better seems that the user-config.jam has no effect

编辑2
我发现一个问题,

EDIT 2 I've found an issue

using msvc : CEPlatformName :
        <compileflags>-D WINCE

问题是,该指令不定义任何东西。我也试过

The issue is that this instruction does not define anything. I've also tried

using msvc : CEPlatformName :
        <compileflags>/D_CRT_SECURE_NO_WARNINGS

但结果是相同的。

But the result is the same.

推荐答案


Finaly我能够建立Boost.Thread Boost.System Boost.Chrono Boost.DateTime Boost.Regex在调试和发布模式。

Finaly I'm able to build Boost.Thread Boost.System Boost.Chrono Boost.DateTime Boost.Regex in debug and release mode.


这个问题是根据该端口(http://stackoverflow.com/questions/16016637/boost-c-and-windows-ce-6-0)的WINCE不支持长文件名。 DLL名称的可以更大然后32个字符。

The issue is according to this port (http://stackoverflow.com/questions/16016637/boost-c-and-windows-ce-6-0) that WinCe doesn't support long names. DLL name's can be larger then 32 chars.


名长度的同样的问题引起this_thread :: sleep_for到不起作用。

The same problem of name length caused this_thread::sleep_for to don't work.


感谢所有的人帮助了我。

Thanks for all people the helped me.

这篇关于构建升压C ++的WinCE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆