小编UpA*_*dam的帖子

将静态库链接到其他静态库

我有一小段代码依赖于许多静态库(a_1-a_n).我想将该代码打包到静态库中,并将其提供给其他人.

我的静态库,让我们称之为X,编译好.

我创建了一个使用X函数的简单示例程序,但是当我尝试将它链接到X时,我从库a_1 - a_n中得到许多关于丢失符号的错误.

有没有办法可以创建一个新的静态库,Y包含X和X所需的所有功能(a_1 - a_n中的选定位),这样我就可以为人们分配Y来链接他们的程序了吗?


更新:

我已经看过只是使用ar转储所有内容并制作一个mega-lib,然而,最终包含了许多不需要的符号(所有.o文件大约为700 MB,但是,静态链接的可执行文件是7 MB).有没有一种很好的方法只包括实际需要的东西?


这看起来与如何将多个C/C++库合并为一个密切相关.

c++ linker unix-ar .a

125
推荐指数
6
解决办法
10万
查看次数

何时在C中使用位域?

关于"我们为什么需要使用位字段"的问题,在Google上搜索我发现位字段用于标记.现在我很好奇,这是实际使用位域的唯一方法吗?我们需要使用位字段来节省空间吗?

从书中定义位域的方法:

struct {
unsigned int is_keyword : 1; 
unsigned int is_extern : 1; 
unsigned int is_static : 1;
} flags;
Run Code Online (Sandbox Code Playgroud)

为什么我们使用int?占用了多少空间?我很困惑为什么我们使用int,但不是short或小于int的东西.据我所知,内存中只占用了1位,而不是整个unsigned int值.这是对的吗?

c

64
推荐指数
8
解决办法
5万
查看次数

我怎样才能转换os.path.getctime()

我怎样才能转换os.path.getctime() 到合适的时间?

我的源代码是:

import os

print("My Path: "+os.getcwd())
print(os.listdir("."))
print("Root/: ",os.listdir("/"))


for items in os.listdir("."):
    if os.path.isdir(items):
        print(items+" "+"Is a Directory")
        print("---Information:")
        print("    *Full Name: ",os.path.dirname(items))
        print("    *Created Time: ",os.path.getctime(items))
        print("    *Modified Time: ",os.path.getmtime(items))
        print("    *Size: ",os.path.getsize(items))
    else:
        print(items+" Is a File")
Run Code Online (Sandbox Code Playgroud)

输出:

---Information:
    *Full Name:  
    *Created Time:  1382189138.4196026
    *Modified Time:  1382378167.9465308
    *Size:  4096
Run Code Online (Sandbox Code Playgroud)

python os.path

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

如何列出包含等效提交的分支

在先前的问题中,有人为查找包含EXACT提交的分支提供了答案:

如何列出包含给定提交的分支

接受的答案强调,这仅适用于EXACT提交ID,而不适用于相同的提交.有人进一步指出,Git Cherry可以用来解决这个问题.

Git樱桃SEEMS适合反向; 发现提交没有推到上游.如果我不知道哪个分支创建它以及什么是上游,那么这是无用的.所以我不知道它将如何帮助解决这个问题.

有人可以解释/提供一个如何使用git cherry查找包含特定提交的"等效"的所有分支的示例吗?

git version-control

23
推荐指数
2
解决办法
3289
查看次数

C中的优化矩阵乘法

我正在尝试比较矩阵乘法的不同方法.第一个是常规方法:

do
{
    for (j = 0; j < i; j++)
    {
        for (k = 0; k < i; k++)
        {
            suma = 0;
            for (l = 0; l < i; l++)
                suma += MatrixA[j][l]*MatrixB[l][k];
                MatrixR[j][k] = suma;
            }
        }
    }
    c++;
} while (c<iteraciones);
Run Code Online (Sandbox Code Playgroud)

第二个包括首先转置矩阵B然后按行进行乘法运算:

int f, co;
for (f = 0; f < i; f++) {
    for ( co = 0; co < i; co++) {
        MatrixB[f][co] = MatrixB[co][f];
    }
}

c = 0;
do
{
    for (j …
Run Code Online (Sandbox Code Playgroud)

c matrix

22
推荐指数
5
解决办法
5万
查看次数

如何在git中移动master返回几个提交?

我有一个git存储库,它拥有一个Drupal站点.我花了最后一天尝试使用几个不同的模块来构建一个功能.我放弃了目前的做法,决定尝试不同的模块组合.但是,我的存储库在主分支上有几个提交包含这个功能开发过程(我知道我没有以有效的方式分支.)我想摆脱最后的三个或四个提交并将master设置为我的历史(我不想将我目前的工作与任何东西合并,我只是想让它消失.)我该怎么做?

git git-reset

21
推荐指数
2
解决办法
2万
查看次数

Numpy C++程序总是给出段错(很可能是滥用语法或类型)

我正在为python程序开发我的第一个C++扩展.我一直试图调试这段特殊的代码几个小时,我的想法不合适.

segfault似乎与PyArrayObject old_simplices_array传递给C++代码的东西有关.该对象是一种2d numpy array类型uint32.

此代码直接由scipy.weave放在一起的代码修改.当代码被scipy.weave.inline格式化并使用时,一切正常.这似乎消除了我的程序的python部分和算法本身可能成为罪魁祸首.

这只留下了语法和类型.有没有人看到任何不正确的语法或类型转换代码?

static PyObject* exterior(PyObject* self,
                          PyArrayObject* old_simplices_array)
{
    const short unsigned int step = old_simplices_array->dimensions[1];
    const short unsigned int j_max = step - 1;
    const long unsigned int col_max = 
        old_simplices_array->dimensions[0] * step;
    short unsigned int j, k, face_index;
    long unsigned int col;
    unsigned int num_simplices = 0;

    PyObject* indices = PyList_New(0);
    PyObject* indptr =  PyList_New(0);
    PyObject* data =  PyList_New(0);
    PyObject* simplices = PyList_New(0);
    PyList_Append(indptr, PyLong_FromLong(0)); …
Run Code Online (Sandbox Code Playgroud)

c++ python numpy

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

anaconda在Windows上安装python 3.4

我想使用Anaconda安装和使用python 3.4及其众多库(如numpy,pandas等).不幸的是,我无法激活python 3.4.

我在Windows 8笔记本上安装了Acaconda 2.0(Anaconda-2.0.0-Windows-x86_64).正确安装了Anaconda程序并安装了python 2.7.然后,我尝试在C:\ Program Files\Anaconda目录中的命令提示符下使用这些命令安装python 3.4.

$ conda update conda
$ conda create -n py34 python=3.4 anaconda
$ activate py34
Run Code Online (Sandbox Code Playgroud)

前两个似乎工作正常,因为我没有看到任何错误消息.在最后一步,我收到以下错误消息: No environment named “py34” exits in C:\Program Files\Anaconda\envs

Python 3.4不是安装在C:\ Program Files\Anaconda中,而是安装在C:\ Users\Daddio1949\envs\py34目录中.

我不知道如何完成安装,我该怎么办?

python windows anaconda

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

在进程中每隔一段时间执行一次任务

我想每2小时执行一次任务.Python有一个Timer in Threading模块,但是它能满足我的需求吗?我如何自己生成一个合适的计时器?

python timer

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

Python比C++更快?这是怎么发生的?

我正在使用Windows7使用CPython for python3.22和MinGW的g ++.exe for C++(这意味着我使用libstdc ++作为运行时库).我写了两个简单的程序来比较它们的速度.

蟒蛇:

x=0
while x!=1000000:
    x+=1
    print(x)
Run Code Online (Sandbox Code Playgroud)

C++:

#include <iostream>
int main()
{
    int x = 0;
    while ( x != 1000000 )
    {
        x++;
        std::cout << x << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

两者都没有优化.

我先运行c ++,然后通过交互式命令行运行python,这比直接启动.py文件慢得多.

但是,python outran c ++的速度是原来的两倍多.Python花了53秒,c ++花了1分54秒.

是因为python对解释器进行了一些特殊的优化,还是因为C++必须引用和std会降低它并使它占用ram?
还是其他原因?

编辑:我再次尝试,\n而不是std::endl,并用-O3旗帜编译,这次花了​​1分钟达到500,000.

c++ python

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

标签 统计

python ×5

c++ ×3

c ×2

git ×2

.a ×1

anaconda ×1

git-reset ×1

linker ×1

matrix ×1

numpy ×1

os.path ×1

timer ×1

unix-ar ×1

version-control ×1

windows ×1