我有一小段代码依赖于许多静态库(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++库合并为一个密切相关?.
关于"我们为什么需要使用位字段"的问题,在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值.这是对的吗?
我怎样才能转换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) 在先前的问题中,有人为查找包含EXACT提交的分支提供了答案:
接受的答案强调,这仅适用于EXACT提交ID,而不适用于相同的提交.有人进一步指出,Git Cherry可以用来解决这个问题.
Git樱桃SEEMS适合反向; 发现提交没有推到上游.如果我不知道哪个分支创建它以及什么是上游,那么这是无用的.所以我不知道它将如何帮助解决这个问题.
有人可以解释/提供一个如何使用git cherry查找包含特定提交的"等效"的所有分支的示例吗?
我正在尝试比较矩阵乘法的不同方法.第一个是常规方法:
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) 我有一个git存储库,它拥有一个Drupal站点.我花了最后一天尝试使用几个不同的模块来构建一个功能.我放弃了目前的做法,决定尝试不同的模块组合.但是,我的存储库在主分支上有几个提交包含这个功能开发过程(我知道我没有以有效的方式分支.)我想摆脱最后的三个或四个提交并将master设置为我的历史(我不想将我目前的工作与任何东西合并,我只是想让它消失.)我该怎么做?
我正在为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) 我想使用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目录中.
我不知道如何完成安装,我该怎么办?
我想每2小时执行一次任务.Python有一个Timer in Threading模块,但是它能满足我的需求吗?我如何自己生成一个合适的计时器?
我正在使用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.