C++ 构建Boost C++;畏缩

C++ 构建Boost C++;畏缩,c++,boost,windows-ce,C++,Boost,Windows Ce,我知道这是一个类似的问题,但对我没有帮助。 我想在x86平台上为WindowsCE6构建boost。 我已经成功地将STLPort以发行版模式构建为WINCE的共享库,我还添加了一些补丁,集成了OpenCE时间库,并实现了一些缺少的ANSI C函数。STLPort测试正常(只是wcout、wcin和wcerr in_avail()函数有问题,我不知道问题出在哪里)。 为了构建boost,我创建了一个批处理文件,并以这种方式更改user-config.jam。该版本还可以,但似乎我是为我的

我知道这是一个类似的问题,但对我没有帮助。 我想在x86平台上为WindowsCE6构建boost。

我已经成功地将STLPort以发行版模式构建为WINCE的共享库,我还添加了一些补丁,集成了OpenCE时间库,并实现了一些缺少的ANSI C函数。STLPort测试正常(只是wcout、wcin和wcerr in_avail()函数有问题,我不知道问题出在哪里)。

为了构建boost,我创建了一个批处理文件,并以这种方式更改user-config.jam。该版本还可以,但似乎我是为我的Windows Xp平台而不是WinCE编译的。
using msvc : 9.0~CEPlatformName : "C:\...\cl.exe" :
    <compileflags>-D_CRT_SECURE_NO_WARNINGS
    <compileflags>-D_CRT_SECURE_NO_DEPRECATE
    ...
    <setup>CEPlatformNameConfig.bat
;

boost构建系统非常复杂,我不理解它是如何工作的(文档不是很好,在google上也没有太多)。boost的构建还可以,但我无法运行应用程序。似乎缺少某个DLL或Boos DLL是错误的。当我使用调试器时得到的消息是“Nessun processo all'estremita'della PIPE”->“管道末端没有进程”。当我尝试从目标设备启动应用程序时,它没有效果。我做错什么了吗?我如何告诉boost使用特定配置?

另一个问题是我看不到构建日志。我不知道我到底在建什么。有没有办法看看到底做了什么?

我调用以构建boost的批处理文件(我启动Visual Studio 2008的shell):

这是位于tools/build/v2中的user-config.jam

编辑 似乎user-config.jam中的compileflags没有任何效果。。。或者更好的是,user-config.jam似乎没有效果

编辑2 我发现了一个问题

using msvc : CEPlatformName :
        <compileflags>-D WINCE
使用msvc:CEPlatformName:
-畏缩
问题是该指令没有定义任何内容。我也试过了

using msvc : CEPlatformName :
        <compileflags>/D_CRT_SECURE_NO_WARNINGS
使用msvc:CEPlatformName:
/D\u CRT\u安全\u无警告
但结果是一样的。

我发现了问题
我终于在自定义x86目标上构建了boost.chrono boost.date\u time boost\u系统和boost.thread fow Windows CE 6.0。

我以这种方式更改了user-config.jam
using msvc : 9.0~CEPlatformName : "C:\...\cl.exe" :
    <compileflags>-D_CRT_SECURE_NO_WARNINGS
    <compileflags>-D_CRT_SECURE_NO_DEPRECATE
    ...
    <setup>CEPlatformNameConfig.bat
;
正确定义“x86”和“ux86”也很重要。请注意,`X86`将使STLPort假定ANSI C库文件的目录错误。

但是我对boost::this_thread::sleep_for()函数有一个问题。我知道boost使用TLS进行此操作,我知道TLS在WinCE中没有完全实现。我可以用Win32库的简单::Sleep()替换此函数
我只确定绞车有'TlsAlloc()'、'TlsFree()'、'TlsGetValue()'和'TlsSetValue()'函数,并且至少有'TLS_MINIMUM_AVAILABLE'插槽用于定义为至少64的TLS。

最后,我能够在调试和发布模式下构建Boost.Thread Boost.System Boost.Chrono Boost.DateTime Boost.Regex。

问题是根据这个港口(http://stackoverflow.com/questions/16016637/boost-c-and-windows-ce-6-0)那个WinCe不支持长名称。DLL名称可以大于32个字符。

相同的名称长度问题导致此线程::sleep\u不工作。

谢谢所有帮助我的人。

您说“我无法运行应用程序”是什么意思?什么申请?运行
bjam
行后,是否会得到boost库?你看到错误了吗?通过在
bjam
行的末尾添加“>result.txt”,尝试将
bjam
输出重定向到某个文件。似乎boost是为Windows Xp编译的,而不是为Windows ceI编译的。我没有生成错误。如果您已经解决了问题,我已经在文本文件中重定向输出-回答您自己的问题。请不要将答案放入问题本身,也不要将标题更改为包含任何类型的“已解决!!!”。完成。谢谢你的建议
using msvc : CEPlatformName :
        <compileflags>/D_CRT_SECURE_NO_WARNINGS
using msvc : 9.0~CEPlatformName : "C:\...\cl.exe" :
    <compileflags>-D_CRT_SECURE_NO_WARNINGS
    <compileflags>-D_CRT_SECURE_NO_DEPRECATE
    ...
    <setup>CEPlatformNameConfig.bat
;
bjam ... toolset=msvc-9.0~CEPlatformName ...