小编pal*_*man的帖子

C isupper()函数

我目前正在阅读"C编程语言第2版",我不清楚这个练习:

可以实现像isupper这样的函数以节省空间或节省时间.探索两种可能性.

  • 我该如何实现这个功能?
  • 我应该如何编写两个版本,一个用于节省时间,一个用于节省空间(一些伪代码会很好)?

我会很感激对此提出一些建议.

c

6
推荐指数
1
解决办法
4817
查看次数

在 Windows 上使用 -R 和 -rpath 开关进行链接

我在 Windows XP 上使用 gcc 编译器(MinGW)。libdir.dll我创建了一个 .dll 库,然后尝试构建一个使用该库的程序。
我不想将该 .dll 文件放入 System 或 System32 文件夹中,也不想在 PATH 变量中设置它的路径,我想要的是将这些信息提供给程序本身。
我知道有一个-R-rpath开关可用,所以我要把它与其中之一链接起来。

第一个-rpath:
gcc -L /path/to/lib -Wl,-rpath, /path/to/lib main.o -ldir -o prog

比-R:
gcc -L /path/to/lib -Wl,-R, /path/to/lib main.o -ldir -o prog

此链接成功,prog但当我启动该程序时,Windows 打印找不到它的消息libdir.dll
所以我的问题是出了什么问题,为什么libdir.dll即使我使用适当的开关,运行时路径也不知道?

假设我有 prog1 和 prog2,每个都包含它们自己的 libdir.dll 副本,并且它们都开始运行,同时加载库中的代码。内存中发生的情况是加载了两个副本,还是链接器发现存在一个副本并将其用于两个程序?
第二个问题是关于如何加载库(任何操作系统)。链接器总是加载整个库还是只加载所需的部分?例如,如果程序引用foo()库中的函数,链接器是否首先仅将该函数或整个库映射到内存?

c windows dynamic-linking

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

标签 统计

c ×2

dynamic-linking ×1

windows ×1