小编hma*_*tar的帖子

带有静态库的c ++ undefined引用

我正在尝试从类中创建一个静态库,但是当我尝试使用它时,我总是会遇到任何未定义引用的错误.我继续的方式是创建像这样的目标文件

g++ -c myClass.cpp -o myClass.o
Run Code Online (Sandbox Code Playgroud)

然后用它包装

ar rcs myClass.lib myClass.o
Run Code Online (Sandbox Code Playgroud)

有一些我通常会忽略这一点.我打赌这是符号的东西.感谢您的任何建议,我知道这很可能是我可以找到的东西,如果阅读一些教程,所以很抱歉再次困扰愚蠢的东西:)

编辑:

myClass.h:

class myClass{
    public:
        myClass();
        void function();
};
Run Code Online (Sandbox Code Playgroud)

myClass.cpp:

#include "myClass.h"

myClass::myClass(){}
void myClass::function(){}
Run Code Online (Sandbox Code Playgroud)

程序使用类:

#include "myClass.h"

int main(){
myClass mc;
mc.function();

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

最后我像这样编译它:

g++ -o main.exe -L. -l myClass main.cpp
Run Code Online (Sandbox Code Playgroud)

错误只是经典:

C:\Users\RULERO~1\AppData\Local\Temp/ccwM3vLy.o:main.cpp:(.text+0x31): undefined
 reference to `myClass::myClass()'
C:\Users\RULERO~1\AppData\Local\Temp/ccwM3vLy.o:main.cpp:(.text+0x3c): undefined
 reference to `myClass::function()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

c++ static-libraries

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

arm-eabi arm-gnueabi和gnueabi-hf编译器之间的区别

arm-eabi,gnueabi和gnueabi-hf交叉编译器有什么区别.我发现很难选择编译器.是否有针对arm的本机编译器?

linux gcc arm linux-device-driver linux-kernel

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

GCC问题:使用依赖于模板参数的基类成员

以下代码不使用gcc编译,但使用Visual Studio编译:

template <typename T> class A {
public:
    T foo;
};

template <typename T> class B: public A <T> {
public:
    void bar() { cout << foo << endl; }
};
Run Code Online (Sandbox Code Playgroud)

我收到错误:

test.cpp:在成员函数'void B :: bar()'中:

test.cpp:11:错误:在此范围内未声明'foo'

但它应该是!如果我换bar

void bar() { cout << this->foo << endl; }
Run Code Online (Sandbox Code Playgroud)

然后它确实编译,但我不认为我必须这样做.GCC在这里遵循C++官方规范中的某些内容,还是仅仅是一个怪癖?

c++ templates base-class class-members name-lookup

34
推荐指数
4
解决办法
7135
查看次数

Perf显示损坏的函数名称

在我看到CppCon 2015的这个演讲之后,我想对一些程序进行概述.我下载了那个人在谈话中使用的相同Google基准库,用适当的开关编译我的程序,将其链接到它,然后使用perf记录一次跑步.报告选项给了我这个:

在此输入图像描述

正如您所看到的,函数名称不是很易读.我认为这与C++名称修改有关.有趣的是,所有的功能名称都在视频中正确显示给那个发表演讲的人,但不适合我.我不认为这是完全缺少符号信息的情况,因为在这种情况下我只会看到内存地址.由于某种原因,perf不能"撤消"我的C++名称,这看起来很令人沮丧.

我正在使用gcc(g ++)版本5.2.1,perf是版本4.2.6,我在编译时使用这些开关:

-I<my own include path> -L<path to the benchmark library> -O3 -std=c++14 -gdwarf-2 -fno-rtti -Wall -pedantic -lbenchmark -pthread

我不使用的原因-fno-omit-frame-pointer是我使用了-gdwarf-2选项,它将调试信息留在矮人可执行文件中,这是在这种情况下保留帧指针的替代方法.这也意味着我--call-graph "dwarf"转到了perf record.无论如何,我也尝试了帧指针方法,它给出了相同的结果,所以这并不重要.

那么为什么在这种情况下不会"撤消"C++名称错误?这与使用GCC有什么关系,这当然意味着我正在使用libstdc ++?

c++ profiling name-mangling perf

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

在Google App Engine中使用JSON请求(Go编程语言)

我正在尝试使用Go将JSON格式的请求从我的应用程序的Javascript前端发送到App Engine.如何将请求解析为处理程序中的结构?

比方说,我的请求是带有请求有效负载的POST

{'Param1':'Value1'}
Run Code Online (Sandbox Code Playgroud)

我的结构是

type Message struct {
    Param1 string
  }                                    
Run Code Online (Sandbox Code Playgroud)

和变量

var m Message                               
Run Code Online (Sandbox Code Playgroud)

应用程序引擎文档中的示例使用FormValue函数来获取标准请求值,当您使用json时,这似乎不起作用.

一个简单的例子将非常感激.

google-app-engine json go

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

在循环中添加行时动态更新Jtable

我正在尝试用Java编写简单的应用程序,只从邮件服务器获取所有标头.实际上一切正常,除了在使用DefaultTableModel时在JTable中显示数据.关键是我在邮箱中有大约6k条消息:P.当我触发下载标题按钮GUI挂起,直到收到最后一条消息 - 然后我可以在JTable中正确查看所有内容.每当我从单个消息中获取头时,JTable就不会更新 - 只有在所有消息都被下载之后 - 直到GUI挂起.为了找出发生了什么,我写了另一个应用程序,将行添加到JTable.在Delphi中有简单的"Application.ProcessMessages"更新GUI ...我不知道如何在java(swing)中实现相同的...请帮忙.代码 :

import java.util.logging.Level;        
import java.util.logging.Logger;            
import javax.swing.table.DefaultTableModel;
public class NewApplication extends javax.swing.JFrame {
String[] in;
public NewApplication() {
    initComponents();
}                                                         

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
in=new String[5];    
in[0]="0";
in[1]="1"; 
in[2]="2"; 
in[3]="3"; 
in[4]="4"; 
for(Integer r=0;r<5000;r++)
{
        try {
            add(in);               
            Thread.sleep(5);
        }
        catch (InterruptedException ex) {
            Logger.getLogger(NewApplication.class.getName()).log(Level.SEVERE, null,     ex);
        }
}
}                                        

public void add(String[] in)
{
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
    model.addRow(new Object[]{in[0], in[1], in[2],in[3],in[4]});
}
public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker

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

Spring AOP:aspect @Around 不起作用

我使用 Spring Boot 和 Spring Initializr 制作了一个简单的 Web 应用程序,并尝试使用@Around建议编写@Aspect

当我将自定义注释@RetryOnFailure添加到控制器的端点方法时 - 它可以工作,但是当我将此注释添加到由控制器端点执行的控制器方法时 - 它不起作用。我花了很多时间来理解这种行为的原因,但没有任何结果。所以请帮忙。

项目位于此处:https : //github.com/zalizko/spring-aop-playground

@Aspect
@Component
public final class MethodRepeater {

    @Around("execution(* *(..)) && @annotation(RetryOnFailure)")
    public Object wrap(final ProceedingJoinPoint joinPoint) throws Throwable {
        // code is here
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我的目标是:

@RequestMapping
public String index() {
    inTry();
    return "OK";
}


@RetryOnFailure(attempts = 3, delay = 2, unit = TimeUnit.SECONDS)
public void inTry() {
    throw new RuntimeException("Exception in try " + ++counter); …
Run Code Online (Sandbox Code Playgroud)

java aop spring-aop

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