Articles of 静态

将一个静态库链接到共享库?

背景: 我想将几个静态库链接到共享库。 原因是我希望我的应用程序使用我testing过的特定的lib版本。 我不想将静态版本作为共享库发布到我的应用程序中。 我已经创build了这个样本库和应用程序,以尽可能简化。 我想在链接期间继续将共享库链接到应用程序。 题: 为什么我会收到下面列出的错误信息? 我究竟做错了什么? 也许这不是在Linux上做事情的常用方式,但可以这样做吗? 这是提升特定? – – 图书馆 //example.cpp #include <boost/thread.hpp> void doit() { boost::thread t1; } #build script g++ -Wall -fPIC -I/usr/include -c example.cpp -o example.o g++ -shared /usr/lib/libboost_thread.a /usr/lib/libboost_system.a example.o -o libexample.so #build OK. —-示例应用程序 //main.cpp #include <iostream> void doit(); int main() { std::cout << "main\n"; doit(); […]

Linux不能finddynamic链接的应用程序

我有一个运行Linux Kernel 3.10和Busybox的embedded式系统。 如果我交叉编译(通过buildroot构build工具链,所以它使用uclibc)一个没有-static标志的程序。 它不会运行。 -/bin/sh: helloworld: not found 如果我用-static标志编译我的代码。 它通常会运行并输出HelloWorld 这里发生了什么?

如何静态链接一个复杂的程序

在Linux中,下载了一个程序源,并希望它是静态链接的。 我有一个巨大的Makefile ./configure make 编译。 prehpes这是有点太笼统不问,但我怎样才能使二进制静态链接? 谢谢。 编辑:这样做的原因是要确保二进制文件没有依赖关系(或者至less尽可能less),使得可以在任何基于Linux的计算机上运行,​​即使没有互联网连接,也没有更新的Linux。

静态与dynamic库性能

这是一代人的观点,静态libarries的性能比dynamic性能更快。 我的问题是,这是否也取决于一旦dll被加载到内存中。 我的意思是,一旦初始化和所有的事情发生,dynamic库的情况下调用和执行花费的时间比静态库更长。

重写静态字段

我正在为我的游戏编写一个C#游戏引擎,并且遇到了一个问题。 我需要为每个不同types的块创build一个XNA.Rectangle drawRectangle。 块被存储在一个块列表中,所以这个属性可以通过draw来访问,而不需要投射很多东西,所以必须重写。 我已经尝试了很多方法,但都没有成功。 这是我正在做的最新的一个: Block.cs protected static Rectangle m_drawRectangle = new Rectangle(0, 0, 32, 32); public Rectangle drawRectangle { get { return m_drawRectangle; } } BlockX.cs protected static Rectangle m_drawRectangle = new Rectangle(32, 0, 32, 32); 但是,当创buildBlockX并访问drawRectangle ,它仍然返回0,0,32,32。 理想情况下,我可以重写drawRectangle成员,但是这样做意味着要在每个块类中创build一个成员。 我只想调整m_drawRectangle。 每个块将被创build几百次,所以我不希望它是非静态的,在构造函数中执行它会很愚蠢。 有没有更好的方法,而不是只是把一个静态函数初始化每个块的静态事物? 编辑: 所以总结起来,我的要求是: BlockX.cs中的最小额外代码可以覆盖 字段必须保持静态 最好不要重写drawRectangle ,只有m_drawRectangle 。 每次访问属性时不必创build一个新的矩形

静态库检查器的Windows?

我知道有像PE资源pipe理器的工具来检查窗口上的DLL的内容(导出符号等)。 有没有类似的静态库? 我链接到一个第三方库,这是产生一些链接错误,我想仔细检查,我期望的符号确实是提供。

在静态方法里面不能访问私有类成员?

我有以下设置: //.h class Cell { private: POINT mCellStartingPoint; int mXoffset; int mYoffset; public: static void DrawRowOfPixels(int yoff); Cell(); ~Cell(); }; //.cpp void Cell::DrawRowOfPixels(int yoff) { HDC dc = GetDC(NULL); COLORREF red = 0xFF0000; for(int i = mCellStartingPoint.x; i < mXoffset; i++) { SetPixel(dc, mCellStartingPoint.x + i, mCellStartingPoint + yoff, red); } } 但是,在.cpp文件中实现DrawRowOfPixels()方法时,我得到Cell类的所有成员variables的错误。 (即mCellStartingpoint,mXoffset和mYoffset) 错误C2228:'.x'的左边必须有class […]