我正在尝试从类中创建一个静态库,但是当我尝试使用它时,我总是会遇到任何未定义引用的错误.我继续的方式是创建像这样的目标文件
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) arm-eabi,gnueabi和gnueabi-hf交叉编译器有什么区别.我发现很难选择编译器.是否有针对arm的本机编译器?
以下代码不使用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++官方规范中的某些内容,还是仅仅是一个怪癖?
在我看到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 ++?
我正在尝试使用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时,这似乎不起作用.
一个简单的例子将非常感激.
我正在尝试用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) 我使用 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) c++ ×3
java ×2
aop ×1
arm ×1
base-class ×1
gcc ×1
go ×1
json ×1
linux ×1
linux-kernel ×1
name-lookup ×1
perf ×1
profiling ×1
spring-aop ×1
swing ×1
swingworker ×1
templates ×1