将c ++代码与g ++链接时出现问题。我有两个文件:fileReader() {
console.log("FileReader Called");
var fileInput = document.getElementById('file');
var fileDisplayArea = document.getElementById('source-container');
fileInput.addEventListener('change', function(e) {
var file = fileInput.files[0];
var textType = /text.*/;
if (file.type.match(textType)) {
var reader = new FileReader();
reader.onload = function(e) {
fileDisplayArea.innerText = reader.result;
}
reader.readAsText(file);
} else {
fileDisplayArea.innerText = "File not supported!";
}
});
}
和file1
:
file2
file1:
int A(){
return B();
}
int C(){
return 0;
}
我正在构建使用file2:
int B(){
return 4;
}
函数的共享库,因此我仅使用C()
而不是file1
进行编译。编译或链接时没有问题,但是当我使用共享库时,执行时会收到错误消息,提示未定义file2
。
如果我编译并与B
链接,则没有问题。但是我不想要这种解决方案,因为我有多个递归包含。
我尝试使用file2
和--ffunctions-sections
进行编译,然后与--fdata-sections
链接,但这并没有解决我的问题。
有没有一种方法可以仅链接我实际使用的符号(此处为函数)?
答案 0 :(得分:0)
您应该将共享库视为通用的东西。即使您总是想从图书馆借书,其他人也可能想借其他书。因此,请删除方法int A()
或通过链接到其依赖项使其起作用。
G ++提供了链接时优化(在编译和链接时使用参数-flto
)。但是,使方法int A()
无法访问,然后希望对其进行优化,绝对不是解决问题的干净方法。