小编dom*_*eau的帖子

使用Boost构建单元测试时链接器错误

我正在使用gcc 4.8.2和Boost 1.59.我在Kubuntu 12.04 LTS上运行.我只是想编写一个简单的单元测试应用程序,我遇到了链接器错误.

这是我的代码:

main.cpp中

#define BOOST_TEST_MODULE My Module
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)

test1.cpp

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE( suite1 );
BOOST_AUTO_TEST_CASE( case1 )
{
    BOOST_TEST_MESSAGE( "Hello!" );
}
BOOST_AUTO_TEST_SUITE_END();
Run Code Online (Sandbox Code Playgroud)

当我建立时我做:g++ -std=c++11 -o test main.cpp test1.cpp -I/usr/local/include -L/usr/local/lib -lboost_unit_test_framework.我得到了这个结果:

/tmp/ccmNLUMx.o: In function `__static_initialization_and_destruction_0(int, int)':
test1.cpp:(.text+0x15e): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>)'
test1.cpp:(.text+0x1b9): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)'
/tmp/ccmNLUMx.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
test1.cpp: (.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x6d): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)'
collect2: erreur: ld …
Run Code Online (Sandbox Code Playgroud)

c++ gcc boost unit-testing c++11

2
推荐指数
1
解决办法
1790
查看次数

Boost.test找不到主要的

我正在使用gcc 4.8,在kubuntu 12.04上提升1.59.

我写了一个简单的main.cpp文件:

#define BOOST_TEST_MODULE My_Module
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE( foo )
{}
Run Code Online (Sandbox Code Playgroud)

当我构建时,这不起作用

g++ -std=c++11 main.cpp -I/usr/local/include -L/usr/local/lib -lboost_unit_test_framework -o test
Run Code Online (Sandbox Code Playgroud)

我收到一堆链接器错误:

/usr/lib/x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to 'main'
/tmp/cc57ppN0.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x131): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)'
/tmp/cc57ppN0.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
main.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x6d): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)'
collect2: erreur: ld a retourné 1 code d'état d'exécution
Run Code Online (Sandbox Code Playgroud)

什么未定义引用'main'意味着??? 嗯,我知道这是因为找不到main()但为什么呢?AFAIK我的文件的语法是正确的.它应该链接,不是吗?

c++ gcc boost g++ c++11

2
推荐指数
2
解决办法
1605
查看次数

刷新iframe时如何避免闪烁?

首先,即使我的问题是关于如何刷新<iframe>没有闪烁,任何其他可以解决我的问题的建议都将受到欢迎.

问题:我有一个发布"主"html页面的服务器.同时,它拍摄照片(比如每秒一张)并将它们保存在硬盘上.我希望图片显示在网页上并刷新.

找到的解决方案:我使用了一个<iframe></iframe>范围,我放了另一个只包含图像的页面.然后定期刷新第二页.因此,整个页面不刷新,只有图像帧.问题是该解决方案遭受每次刷新时发生的闪烁.

这是主页面的代码(有点压缩):

<!DOCTYPE html><html><head><title>Blabla</title></head>
<body bgcolor="#404040"><h1>WELCOME!...</h1><hr>
<table border="0"><tr height="480"><td width="640">

<!-- RIGHT HERE! -->
<iframe src="image.html" width="640" height="480" frameborder="0"></iframe>

</td></tr></table>
</body></html>
Run Code Online (Sandbox Code Playgroud)

第二个网页是这样的:

<!DOCTYPE html><html><head>
<script type="text/javascript">
<!--
function f( t )
{
    setTimeout( "location.reload( true );", t );
}
-->
</script>
</head>
<body bgcolor="#000000" onload="JavaScript:f( 1000 );">
<img src="../images/myimage.png" alt="Erreur" height="100%" width="100%"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我是JavaScript的初学者,所以我不假装这段代码很好,甚至可以通过.随意给我一些建议.

现在,是否可以重新加载而不会闪烁?我读到,页面没有完全加载时会出现闪烁.我还读到了在加载时间内打开和关闭的隐藏帧等.但我找不到一个好的解决方案.

另外,我知道像AJAX这样的技术存在,但我不太了解它们.如果有必要,请随时建议我使用它们,我可以快速学习...


编辑1:大多数Android浏览器不支持相似的图像大小,就像我的例子.使用绝对像素值.

html javascript iframe

1
推荐指数
1
解决办法
5584
查看次数

为什么UTF-8在2个字节上编码为U + 1xxxx字符?

我试图弄清楚C如何处理Unicode中的字符代码。我将语言环境设置为LC_ALL“ fr_CA.UTF8”,然后输入一个字符wscanf()(作为wchar_t... 的数组)。然后,我探索每个字节,发现一些奇怪的地方。我输入了一个U + 1d11e的高音键(从网页复制的“”)。这实际上是3个字节,所以我希望有2个字节wchar_t。我得到了:0x1e,0xd1、0x00、0x00,最后两个是空结束字符。这是我的代码:

#include <stdio.h>
#include <locale.h>
#include <wchar.h>

int main ( int argc, char* argv[] )
{  
    setlocale( LC_ALL, "fr_CA.utf8" ); 

    wchar_t input[256];

    wscanf( L"%ls", input);
    wprintf( L"%ls\n", input );

    wprintf( L"Length = %d\n", wcslen( input ) );
    wprintf( L"%d\n", (int)(input[0]&0x00ff) );
    wprintf( L"%d\n", (int)((input[0]&0xff00)>>8) );
    wprintf( L"%d\n", (int)(input[1]&0x00ff) );
    wprintf( L"%d\n", (int)((input[1]&0xff00)>>8) );
    wprintf( L"%d\n", (int)(input[2]&0x00ff) );
    wprintf( L"%d\n", (int)((input[2]&0xff00)>>8) );

    return 0;
}  
Run Code Online (Sandbox Code Playgroud)

我的期望是拥有0x1e,0xd1、0x01、0x00、0x00、0x00 ...

但是我有0x1e,0xd1、0x00、0x00 ... …

c unicode utf-8

1
推荐指数
1
解决办法
77
查看次数

什么是“从 VC 7.1 升级”属性表?

我正在将一个项目从 MSVS2005 移植到 MSVS2010。我刚刚在 MSVS2010 中加载了解决方案并让向导转换项目。

我跑到物业经理那里,找到了这些物业表(从上到下):

  • 从 VC 7.1 升级
  • Microsoft.Cpp.x64(或 Win32)用户
  • 多字节字符支持(不可编辑)
  • 到 MFC 的动态链接(不可编辑)

我了解最后三个,但我不知道从 VC 7.1 升级的目的是什么。有人可以给我一点解释吗?


PS 我在属性页“从 VC 7.1 升级”中找到了 C/C++, Preprocessor, Preprocessor Definitions = _VC80_UPGRADE=0x0710;%(PreprocessorDefinitions)但在项目属性中我看到了NDEBUG;WIN32;_LIB;%(PreprocessorDefinitions)。这是什么意思呢?什么是_VC80_UPGRADE = 0x0710宏?

windows visual-studio-2010 visual-studio

0
推荐指数
1
解决办法
2266
查看次数

$ .post的回调无法访问此内容

我是JavaScript/jQuery等的初学者,我面临一个小问题,也许你可以帮我解决.我有一个对象原型名称Page,其中有一个数组和一个执行AJAX POST并处理答案的函数.代码如下所示:

function Page( url ){
    this.url = url;
    this.elarr = [];

    this.addElem = function( elem ){
        this.elarr.push( elem );
    }

    this.job = function(){
        $.post( this.url,
            {
                // some data here...
            },
            function( data, status ){
                var decodedData = JSON.parse( data );
                this.elarr[0].value = decodedData.value; // Error: elarr is not defined
            });
    }
};
Run Code Online (Sandbox Code Playgroud)

我做了类似的事情:var page = new Page( 'page.php' ); page.addElem( new Elem );哪里Elem是原型.value.

服务器端的php代码正确回答了POST请求.通过使用Chrome开发工具,我可以执行JavaScript代码并解码的Json答案是正确的.当它试图访问时出现问题this.elarr[0](是的,在第1页,elarr [0]存在!)例如,如果我用硬编码替换伪造的线,page1.elarr[0].value = decodedData.value; …

javascript ajax jquery

0
推荐指数
1
解决办法
36
查看次数