我正在使用Embarcadero RAD Studio 2010(C++).项目文件(.cbproj)有五个不同的标记,包含.bpis或.libs列表.我想了解一些关于链接器如何使用这些库文件列表的信息(使用或不使用运行时包构建时).
LinkPackageImports
LinkPackageStatics
AllPackageLibs
PackageLibs
PackageImports
我想我已经理解了最后一个.它包含可以从IDE中的"项目属性"设置的运行时包列表.
这个问题的动机是我试图从我的应用程序中消除不必要的依赖项..cbproj中的这五个标签似乎都包含各种不同的lib和bpis.我知道我不需要的一些库,以及我认为我不需要的一些库.从某些列表中删除某些库似乎没有任何效果,而从其他列表中删除其他库会导致表单的链接器错误[ILINK32 Error] Fatal: Unable to open file 'FILENAME.OBJ'
我正在慢慢解决所有链接器问题,但是当我在这五个列表中的一个中包含库名称时,确切地知道我告诉链接器要做什么将非常有帮助.
在Embarcadero RAD Studio 2010中,静态库的项目选项中有一个名为"Dynamic RTL"的设置.(它在TLib部分.)
我的印象是,关于是动态还是静态链接RTL的决定是在链接时进行的,而不是在编译时进行的.但静态库只能编译; 没有链接步骤.那么,更改此选项如何影响我的静态库?
我有一些使用这些静态库的.exe和.dll项目,我在这些项目中设置了"动态RTL"选项.这是有道理的,因为它们实际上有链接的东西,但我不明白这个设置对静态库有什么影响.
如果静态库具有动态RTL = true而使用此库的DLL和EXE具有动态RTL = false,是否会导致任何问题?
这是我使用 C++ 20 年后的第一个 Node.js Web 应用程序,我想我只需要有人为我指明正确的方向。
我正在编写一个与学校和学生打交道的应用程序的服务器端。当客户端向特定学生发送请求(通过我的 REST API)时,我想返回该学生的名字和姓氏以及学校。我正在使用一个名为 epilogue 的库,它解析请求,通过sequelize 读取/写入 MySQL 数据库,并将结果包装在 JSON 响应中。它将发送我为学生定义的所有字段以及我定义的任何吸气剂的值。一切都进展顺利。我已经能够使用尾声进行 POST、PUT、GET 并通常保持 MySQL 数据库更新。
然而,当我尝试定义一个返回学生学校名称的 getter 方法时,事情变得棘手。为此,我必须访问学校表中的记录并获取学校名称。
var school = sequelize.define("School", {
SchoolName: {
type: DataTypes.STRING,
},
}, {
classMethods: {
associate: function(models) {
school.hasMany(models.Student);
}
}
}
}
var student = sequelize.define("Student", {
FirstName: {
type: DataTypes.STRING,
},
LastName: {
type: DataTypes.STRING,
},
}, {
classMethods: {
associate: function(models) {
student.belongsTo(models.School);
},
},
getterMethods: {
FullName: function() {
return this.FirstName + ' …Run Code Online (Sandbox Code Playgroud)有没有办法使用Windows 7开发机器创建WinRT应用程序,还是必须安装Windows 8操作系统才能开发WinRT平台?
microsoft-metro windows-8 windows-runtime winrt-xaml visual-studio-2012
在Embarcadero RAD Studio XE3中链接C++项目(关闭使用运行时包)时,我有时会收到表单错误:
[ilink32 Error] Fatal: Unable to open file 'FOO.OBJ'
我明白是什么原因造成的.这是因为代码中有一个隐式引用(通常是通过a #pragma link)导致链接器需要该单元FOO.
如果我查看VCL源代码,我通常可以找到一个FOO.PAS编译成一个FOO.DCU.这是链接器正在寻找但无法找到的已编译单元.
我知道这个编译过的单元存在于一个VCL库中,但我不知道如何找出哪一个.例如,VCL.LIB和RTL.LIB和BCBIE.LIB(等等)包含哪些单位?
给定一个单元名称,我想知道哪个VCL库包含它.如果我知道,我可以将相应的.lib文件添加到LinkPackageStatics我的cbproj文件中的标记中,所有内容都可以正常链接.
如果只是在该单元的文档中显示它会很好,但它不存在.目前,我必须使用试验和错误来找到合适的库,但肯定有一个公开可用的列表,显示哪些VCL单元链接到哪些VCL库.
我在哪里可以找到这样的列表?
(顺便说一句,我知道在IDE的正常使用中,开发人员不需要知道这一点.IDE通常会为您解决这个问题.但是我发现当.cbproj合并错误时我偶尔会需要这些信息或者手动编辑不正确或出于超出IDE正常使用范围的其他一些原因.)
编辑:谢谢!tlib正是我所需要的.我在shell脚本上很糟糕,但我写了一个小shell脚本,它输出了它所包含的每个单元名称旁边的库名:
#!/bin/bash
while [ "$1" != "" ]; do
name=$(basename "$1")
tlib /L $name | grep size | awk -v name=$name '{print name, "\t", $1}'
shift
done
Run Code Online (Sandbox Code Playgroud)
然后我可以通过在我感兴趣的所有.libs上执行它来调用脚本,然后为我正在寻找的单元(如SysUtils)进行grepping:
find . -name "*.lib" -exec libunits.sh {} \; | grep SysUtils
Run Code Online (Sandbox Code Playgroud) c++builder ×3
c++ ×1
delphi ×1
express ×1
javascript ×1
linker ×1
node.js ×1
sequelize.js ×1
vcl ×1
windows-8 ×1
winrt-xaml ×1