小编Jus*_*tin的帖子

如何使用相同的头文件在C++中编译和链接目标文件?

我遇到这个问题,GCC编译器在链接我在一起的两个目标文件时似乎失败了.两个目标文件foo1.ccfoo2.cc包含来自头文件的类foo1.hh.此外,头文件foo.hh具有出现在其中的对象实例的外部声明foo1.cc.

应当指出的是,头文件foo.hh将只一次两个源文件之间的定义foo1.ccfoo2.cc.

当我使用以下命令编译源文件时,一切似乎都有效:

g++ foo1.cc foo2.cc
Run Code Online (Sandbox Code Playgroud)

上述命令将产生叫做可执行a.out.

当我尝试将源文件独立编译为目标文件时:

g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o
Run Code Online (Sandbox Code Playgroud)

GCC编译器抱怨函数中有未定义的引用foo2.cc.这些功能应该定义在foo1.cc; 但是,链接器无法识别.

我想知道是否有办法解决GCC编译器的这个问题.

c++ gcc object

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

如何使用Expect自动化telnet会话?

我正在尝试编写一个expect脚本来自动执行telnet.这就是我到目前为止所拥有的.

#!/usr/bin/expect
# Test expect script to telnet.

spawn telnet 10.62.136.252
expect "foobox login:"
send "foo1\r"
expect "Password:"
send "foo2\r"
send "echo HELLO WORLD\r"
# end of expect script.
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的是telnet到以下IP地址,然后回应HELLO WORLD.但是,似乎脚本在尝试telnet后失败了......我不确定它是否能够接受登录和密码输入,但它并没有回应HELLO WORLD.相反,我只是得到这个输出:

cheungj@sfgpws30:~/justin> ./hpuxrama 
spawn telnet 10.62.136.252
Trying 10.62.136.252...
Connected to 10.62.136.252.
Escape character is '^]'.
Welcome to openSUSE 11.1 - Kernel 2.6.27.7-9-pae (7).

foobox login: foo1
Password: foo2~/justin> 
Run Code Online (Sandbox Code Playgroud)

linux telnet expect

6
推荐指数
3
解决办法
4万
查看次数

HtmlUnitDriver似乎没有加载页面

我正在尝试让HtmlUnitDriver在我的开发环境中工作.作为初学者,我尝试使用最新的selenium服务器jar实现以下页面中的示例:http: //code.google.com/p/selenium/wiki/GettingStarted

不幸的是,每当我尝试运行此程序时,我都会遇到以下异常:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_16'
Driver info: driver.version: HtmlUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:853)
    at org.openqa.selenium.By$ByName.findElement(By.java:292)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1404)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1094)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1401)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:419)
    at Justin.Main.main(Main.java:30)
Run Code Online (Sandbox Code Playgroud)

我已经尝试修改我的代码以包含此处实现的修复:

获取网址时,HtmlUnitDriver会导致问题

我已经尝试driver.getCurrentUrl()在调用后获取页面的URL driver.get("http://www.google.com"),但返回的字符串是about:blank.

如果我使用FirefoxDriver运行它,这个例子中的类似代码肯定会有用,但是为了满足要求,我需要我的脚本用selenium运行无头(如果它是使用特定的BrowserVersion运行,只要它是无头的就可以了) .

任何帮助将不胜感激.

更新:

这是我正在尝试运行的代码.我只想看到我可以让HtmlUnitDriver使用像向Google输入搜索查询一样简单的工作.

package …
Run Code Online (Sandbox Code Playgroud)

java selenium htmlunit-driver

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

如何避免使用命名空间std; 在C++中

我在尝试将我的C++源代码从HP-UX移植到Linux时遇到了这个问题.当我尝试在Linux上编译C++源代码时,会发生的是它抱怨组件(来自标准C++库)不存在.使用命名空间std放置行; 在源代码的顶部似乎解决了这个问题.当我尝试在HP-UX上重新编译代码时,aCC编译器抱怨这里只有名称空间名称有效(它不认为std是有效的名称空间).我想知道是否有办法解决这个问题,以便源代码与HP-UX长期弃用的C++编译器和LINUX的GCC编译器二进制兼容.

c++ linux gcc hp-ux

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

如何在单引号包围的awk语句中使用单引号?

我在实现我的脚本所需的awk语句时遇到问题:

rsh fooDNS '
    ...

    BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast |  awk '{print \$6}')
    ...
'
Run Code Online (Sandbox Code Playgroud)

这里的问题是上面的语句包含在由单引号括起来的rsh命令中.因此,bash无法解释{print $ 6}周围的单引号,这给我带来了很多问题.到目前为止,我还未能确定如何解决这个问题.

linux bash awk hp-ux

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

GCC编译器是否支持经典C++?

此问题与移植HP-UX可执行文件的过程有关.在HP-UX上,使用HP-UX ACC编译器编译和链接可执行文件.鉴于编译器是从1996年开始的,它似乎并不支持标准C++(今天使用的C++标准).相反,它基于HP-UX称为经典C++的C++标准进行编译.我想知道GCC是否支持经典C++的选项?

谢谢.

c++ linux gcc hp-ux

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

什么可能导致HP-UX和LINUX for C++应用程序的返回值不同?

在将HP-UX C++应用程序移植到LINUX的过程中,我注意到有一个int类型的函数,其中并非所有代码路径都返回一个整数值.当我在HP-UX下编译和运行应用程序(使用acc编译器进行编译)时,它会通过未明确声明返回值的代码路径返回0.但是,当我在LINUX下编译并运行相同的应用程序时,我得到的返回值为-72,因此应用程序会出现错误(这是在返回值小于0时).我注意到经典的C++(ACC编译器支持的一个非常古老和过时的标准)处理变量作用域与标准C++(遗憾的是ACC不支持)略有不同.在经典的C++中,似乎在forloop声明中声明了一个整数

for( int index = 0; index < array.length; index++ )
Run Code Online (Sandbox Code Playgroud)

变量索引可以在forloop之外访问,虽然我不确定是否以相同的方式处理return语句,以便aCC识别出所有代码路径都返回一个值.

我正在处理的功能如下:

int process_phase (const char *phase, const char *seg_type, const char *dist_target, const char *action_target, char *cmd) 
{
  char cmd2[MAX_STRING];

  printf( "I AM INSIDE THE PROCESS_PHASE\n" );

  if (TRACE_MODE) 
  {
    printf ("%s %s\n", MSG_LOOKUP("MSG_PHASE"), phase);
    printf ("%s %s\n", MSG_LOOKUP("MSG_SEG_TYPE"), seg_type);
    printf ("%s %s\n", MSG_LOOKUP("MSG_DIST_TARGET"), dist_target);
    printf ("%s %s\n", MSG_LOOKUP("MSG_ACTION_TARGET"), action_target);
    printf ("%s %s\n", MSG_LOOKUP("MSG_CMD"), cmd);
  }

  // Remove the pre- and post- prefixes
  const char *phase_ref = …
Run Code Online (Sandbox Code Playgroud)

c c++ linux gcc hp-ux

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

如何在Java中将一个字节附加到一个字符串?

我有这个操作我需要执行,我需要在 Java 中将一个字节(例如 0x10)附加到某个字符串。我想知道我该怎么做?

例如:

String someString = "HELLO WORLD";
byte someByte = 0x10;
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我将如何将 someByte 附加到 someString?

我问这个问题的原因是因为我正在开发的应用程序应该向某个服务器发送命令。服务器能够接受命令(base64 编码),对命令进行解码,并解析出这些字节,这些字节不一定与任何类型的 ASCII 编码标准兼容,以执行某些特殊功能。

java string hex byte

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

标签 统计

linux ×5

c++ ×4

gcc ×4

hp-ux ×4

java ×2

awk ×1

bash ×1

byte ×1

c ×1

expect ×1

hex ×1

htmlunit-driver ×1

object ×1

selenium ×1

string ×1

telnet ×1