小编Ale*_*xxx的帖子

如何链接动态库(.so)和静态libc.a

我试图链接静态libc.a和动态库.so失败.

我已经尝试过以下方法:

  1. 首先,我测试所有动态:

    • gcc -shared libtest.c -o libtest.so
    • gcc -c main.c -o main.o
    • gcc main.o -o test -L.-ltest

    它正在工作(编译和执行)

  2. 其次我测试我想要的东西(动态lib和静态libc):

    • gcc -shared libtest.c -o libtest.so
    • gcc -c main.c -o main.o
    • gcc main.o -o test libtest.so /usr/lib/libc.a

    它正在编译,但在执行时,它是段错误的!一个strace显示它正在尝试访问libc.so !!!

  3. 最后,我尝试编译一个简单的程序,没有引用动态库

    • gcc -static main.c - >编译好,运行正常
    • gcc main.c /usr/lib/libc.a - >编译好,运行:segmentation fault(一个strace显示它可以访问libc.so)

怎么做?

谢谢

linker gcc shared-libraries static-libraries

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

图像缩减算法

有人知道微软在Paint中使用了哪些alogirhtm来缩小图片尺寸?

我正在尝试开发一个小软件(供个人使用)以缩减很多图片(用Java).在使用"内置"java函数作为NearestNeighbor,Bilinear和Bicubic之后,结果质量很差......我使用了Lanczos算法,它给出了更好的结果,但没有达到MS Paint结果:/

注意:使用的Paint版本是Windows 7之一,我使用的Lanczos实现是Millie项目LanczosResamplePlugin.java之一,而builtins java来自Graphics2D:

    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
Run Code Online (Sandbox Code Playgroud)

如果有人想要达到相同质量的结果,它将是有帮助的(对于我的结果图片,以及我的知识).

一些结果在这里:

(我没有发布NN,双线性和双三次结果,结果质量很差)

Bellow a landscape(在谷歌图片上找到).原始文件大小为1680x1050,并且草在原始文件中非常锐利(因此Paint结果似乎比Lanczos更好).

原始图像可以在这里查看:landscape-wallpaper-11a.jpg

Lanczos结果:

Lanczos景观

vs Paint结果:

画风景

另一张图片(人物照片),带有一些文字.您可以注意到,在Lanczos结果中,文本的可读性(不那么锐化)比在Paint结果中更少.此外,在黑色标题文本和带有白色文本的红色区域之间,在Lanczos结果中存在一些噪声,这在Paint结果中不存在.在底部,纸张上的网址在第一个结果上完全模糊/不可读,并且在Paint结果中可读.

Lanczos结果:

Lanczos奶酪

vs Paint结果:

画谢谢

我首先想假设MS使用2种算法:1降低比例,第2次通过锐化生成的图像?但是,由于最后一个示例中的底部网址仍然可读,可能不是因为缩小的缩小结果而导致的?

谢谢

编辑

好吧,我有点愚蠢...图片上的噪音是由于jpeg压缩质量(我在保存图片时没有在我的Java代码中设置).

下面是png的结果,所以噪音很大.但是结果仍然不像油漆那样可读.

Lanczos奶酪png

Lanczos奶酪png

image-processing

6
推荐指数
2
解决办法
1426
查看次数

forkpty - 插座

我正在尝试开发一个简单的“telnet/server”守护进程,它必须在新的套接字连接上运行一个程序。这部分工作正常。

但是我必须将我的新进程与 pty 相关联,因为该进程具有一些终端功能(如 readline)。

我开发的代码是(其中 socketfd 是新输入连接的新套接字文件描述符):

int masterfd, pid;
const char *prgName = "...";
char *arguments[10] = ....;

if ((pid = forkpty(&masterfd, NULL, NULL, NULL)) < 0)
    perror("FORK");
else if (pid)
    return pid;
else
{
    close(STDOUT_FILENO);
    dup2(socketfd, STDOUT_FILENO);

    close(STDIN_FILENO);
    dup2(socketfd, STDIN_FILENO);

    close(STDERR_FILENO);
    dup2(socketfd, STDERR_FILENO);

    if (execvp(prgName, arguments) < 0)
    {
        perror("execvp");
        exit(2);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用该代码,我的“prgName”的 stdin / stdout / stderr 文件描述符与套接字相关联(使用 ls -la /proc/PID/fd 查看时),因此,此进程的终端功能不起作用.

通过远程设备上的 ssh/sshd 连接进行测试,并执行“localy”(在 ssh 连接下)prgName,表明此进程“prgName”的 stdin/stdout/stderr fd 与 pty(等等)相关联此过程的终端功能运行良好)。

我做错了什么?如何将我的 socketfd 与 pty(由 …

c sockets linux pty

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

java/pdf文本呈现

我正在研究自己的pdf生成lib的Java,我遇到了一些字体/文本渲染问题.Java中显示的文本(字体,字间距,字符间距等)与PDF中显示的文本不同.

在我的下面的例子中,我使用的字体是"Time New Roman",这是PDF基本字体之一(所以我没有计算并将所有字体指标输出到pdf中).

具体来说,在我生成的PDF中,我有这样的:

BT
/F5 16 Tf
849 921 Td
(Normal Return Distribution) Tj
ET
Run Code Online (Sandbox Code Playgroud)

并且字体F5由对象29 0 R定义,它是(仅基本的,因此没有指定文本度量):

29 0 obj <</Type /Font /Subtype /Type1 /BaseFont /Times-Roman>>
endobj
Run Code Online (Sandbox Code Playgroud)

在Java中,我正在使用:

g2d.setFont(new Font("TimesRoman", Font.PLAIN, 16));
g2d.drawString("Normal Return Distribution", 849, 921);
Run Code Online (Sandbox Code Playgroud)

我已经将文本绘制成与文本边界匹配的矩形,并且在Java中它都可以(我在java中计算字符串边界),但在adobe acrobat reader中,文本比矩形大.

这是一个截图(我通过截取Adobe Acrobat Reader的屏幕截图显示我的PDF,并截取我的程序显示缓冲图像的截图;然后将pdf屏幕截图的部分复制/粘贴到我的矩形下面来构建它程序截图到MSPaint.为了具有相同的矩形大小,我必须以原始大小的65.5%在Adobe中显示pdf:

Java与PDF文本输出

所以我们可以看到java en adobe中用来显示文本的字体是一样的.但是Adobe的文字看起来有点大.事实上,如果我叠加两个单词(一个来自java在adobe的一个上面),似乎单词间距是相同的,字母间距也是,但是一些字母有1个像素宽度差异.

为什么?我能做些什么来解决这个问题?我尝试使用字符间距(Tc运算符),字间距(Tw运算符),水平缩放(Tz运算符)来播放(pdf格式); 我认为它可以"奏效"; 但为什么两个程序中的缩放/间距/ ...不一样?这些(默认)参数不是Font文件的一部分(这是真正的类型)?以及如何正确检索它们(不手动将参数放入我的java代码中)?

谢谢

编辑

因此,正如您已经解释过的那样,我正在调查不使用pdf基本字体以确保Java和Adobe Reader使用相同的字体(ttf文件).但我有一个问题(同样的?).

在PDF输出中,我正在生成这样的字体:

31 0 obj <<
/Type /Font
/FirstChar 0
/LastChar 255
/Widths[1298 ... 646]
/Name /F7
/Encoding /WinAnsiEncoding
/Subtype /TrueType /BaseFont /Tahoma /FontDescriptor …
Run Code Online (Sandbox Code Playgroud)

java pdf fonts text

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