小编Jef*_*ite的帖子

了解.cbproj文件中的包导入

我正在使用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'

我正在慢慢解决所有链接器问题,但是当我在这五个列表中的一个中包含库名称时,确切地知道我告诉链接器要做什么将非常有帮助.

linker c++builder c++builder-2010 runtime-packages

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

更改静态库的"动态RTL"设置有什么影响?

在Embarcadero RAD Studio 2010中,静态库的项目选项中有一个名为"Dynamic RTL"的设置.(它在TLib部分.)

我的印象是,关于是动态还是静态链接RTL的决定是在链接时进行的,而不是在编译时进行的.但静态库只能编译; 没有链接步骤.那么,更改此选项如何影响我的静态库?

我有一些使用这些静态库的.exe和.dll项目,我在这些项目中设置了"动态RTL"选项.这是有道理的,因为它们实际上有链接的东西,但我不明白这个设置对静态库有什么影响.

如果静态库具有动态RTL = true而使用此库的DLL和EXE具有动态RTL = false,是否会导致任何问题?

c++ c++builder static-linking

8
推荐指数
1
解决办法
3371
查看次数

从 Sequelize getter 方法访问关联表

这是我使用 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)

javascript database-design node.js express sequelize.js

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

有没有办法使用Windows 7开发机器创建WinRT应用程序?

可能重复:
我可以在Windows 7计算机上为Microsoft Surface开发软件

有没有办法使用Windows 7开发机器创建WinRT应用程序,还是必须安装Windows 8操作系统才能开发WinRT平台?

microsoft-metro windows-8 windows-runtime winrt-xaml visual-studio-2012

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

哪个.OBJ文件链接到哪个VCL库

在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)

delphi vcl c++builder static-linking c++builder-xe3

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