问题列表 - 第8198页

静态库中的对象注册

我已经实现了一个非常基本的"插件系统"作为静态库的一部分.每个"插件"都实现了对特定图像格式的支持,例如GIF,JPEG等.此外,我还有一个Singleton(一个叫做的类PluginManager),它保存了所有可用插件的列表.

棘手的部分是我想通过在项目文件中添加或删除源文件来禁用/启用插件.为实现此目的,每个插件都会创建一个全局变量(具有不同的名称),并在该类的构造函数中注册该插件PluginManager.

对于JPEG格式,这样的东西......

struct JPEGPlugin
{
  // constructor will register plugin
  JPEGPlugin()
  {
    PluginManager::Singleton().RegisterPlugin(this);
  }

  // plenty of other code
  ...
};

JPEGPlugin jpeg_instance;  // instantiate in global scope
Run Code Online (Sandbox Code Playgroud)

然而,虽然这在理论上完美地起作用,但是当将该静态库链接到其他代码以构建可执行文件时它会失败.只要此可执行文件不访问插件全局变量(如jpeg_instance),链接器就不会看到连接(他完全忽略了构造函数的副作用),并且不包含最终可执行文件中的代码.换句话说,JPEG插件在最终应用程序中不可用.

多年来我遇到过几次问题,我总是在网上寻找解决方案.每次,我只是发现页面基本上说这是一个已知的问题,我必须忍受它.

但也许有人知道如何让这个工作?

c++ plugins static-libraries

7
推荐指数
1
解决办法
2265
查看次数

Apache启动时不会加载PHP扩展

我已经添加了php作为Apache 2.2.11的模块:

LoadModule php5_module "c:/php/php5apache2_2.dll"
Run Code Online (Sandbox Code Playgroud)

并补充说

AddType application/x-httpd-php .php
Run Code Online (Sandbox Code Playgroud)

在PHP.ini中,我的扩展名dir设置为: extension_dir = "C:\php\ext"

而且,目录是正确的,所有文件确实存在.

但是当我启动apache时,我收到了以下错误:

PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_mysql.dll' - 无法找到指定的模块.\ r \n在第0行的未知中
PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_pdo_pgsql.dll' - 无法找到指定的模块.\ r \n在第0行的未知中
PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_pgsql.dll' - 无法找到指定的模块.\ r \n在第0行的未知中

[Sun May 17 03:46:01 2009] [通知] Apache/2.2.11(Win32)PHP/5.2.9 -2配置 - 恢复正常操作
[Sun May 17 03:46:01 2009] [通知]服务器内置:2008年12月10日00:10:06
[Sun May 17 03:46:01 2009] [通知]父级:创建子进程4652

PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_mysql.dll' - 无法找到指定的模块.\ r \n在第0行的未知中
PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_pdo_pgsql.dll' - 找不到指定的模块.\ r \n 在第0行的Unknown中
PHP警告:PHP启动:无法加载动态库'C:\ php\ext\php_pgsql.dll' - 找不到指定的模块.\ r \n在第0行的Unknown中

[Sun May 17] 03:46:01 …

php windows apache

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

是否有兼容的方法来编写href?

例如,在文件中test.php:

<a href="someting/?start=1">go</a>;
Run Code Online (Sandbox Code Playgroud)

所以无论在何处test.php,无论是在Document_Root/Test/目录中还是在Document_Root/Production/目录中,锚都将指向自身.

html anchor href

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

GitPython并将命令发送到Git对象

GitPython是一种与python中的git交互的方式.我正在尝试git commit -m "message"从这个模块访问基本的git命令(例如),根据这个命令应该通过Git模块访问.这是我到目前为止尝试使这些命令工作的原因:

>>> import git
>>> foo = git.Git("~/git/GitPython")
>>> bar = "git commit -m 'message'"
>>> beef = git.Git.execute(foo,bar)
Run Code Online (Sandbox Code Playgroud)

这显示错误,表示没有此类文件或目录.我也尝试了以下作为我的git目录的路径:

~/git/GitPython/.git
/Users/bacon/git/gitclient/

唯一的另一个选择是该命令是错误的,所以我尝试了: commit -m "message"同样,仍然得到"没有这样的文件或目录".

我需要做些什么才能使这些git命令正常工作?

python git

4
推荐指数
1
解决办法
4783
查看次数

为什么在C++中将类声明和定义放在两个单独的文件中?

我只是想知道,将类分成.h和.cpp文件的重点是什么?这使得它更难编辑,如果你的类不会被编译成的.lib或.dll外部使用,有什么意义呢?

编辑:我问的原因是Boost库将所有内容都放在.hpp文件中(大多数库都是这样),我想知道为什么它在我看到的大多数其他代码中都是分开的.

c++

16
推荐指数
2
解决办法
5670
查看次数

在做一些像$ price =(int)((0.1 + 0.7)*10)这样的事情时要采取什么预防措施; 得到7作为答案

用PHP

echo (int) ( (0.1+0.7) * 10 );
Run Code Online (Sandbox Code Playgroud)

或者在Ruby中

p ((0.1+0.7) *10).to_i
Run Code Online (Sandbox Code Playgroud)

结果是7而不是8.可能真的很难抓住这些陷阱.我认为,如果在北美,它不是一个问题,因为我们计算价格高达多少美分,所以17.28美元或17.29美元可能不是一个问题.但在中国或香港这样的国家,价格可能只是一个整数.在这种情况下,如果我们的程序很慷慨,只是询问客户价格的整数部分,那么如果8变为7就会出现问题.所以也许我们总是需要小心并使用round()代替?任何其他方法避免这个陷阱?

floating-point integer

0
推荐指数
1
解决办法
297
查看次数

C++字符串值作为另一个字符串名称

如何在C++中将vartiables值转换为其他名称?就像在这个PHP片段.

$string = 'testVar';

${$string} = 'test';

echo $testVar; // test
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
249
查看次数

如何使浮动内部div与最高div相同的高度

在下面的代码中,我想使用'y'的div来匹配div的高度和3'x'.

<div style="border: 0px solid red; margin: 0px 0px 5px; overflow: hidden;">
<div style="border: 1px solid rgb(129, 11, 0); margin: 0px; padding: 5px; background-color: rgb(30, 23, 22); width: 312px; float: left;">
    x<br/>x<br/>x
</div>
<div style="border: 1px solid rgb(129, 11, 0); margin: 0px; padding: 5px; width: 312px; background-color: rgb(30, 23, 22); float: right;">
    y
</div>
Run Code Online (Sandbox Code Playgroud)

需要注意的是内部div是浮动的.

html css height css-float

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

在每个单词后打印空格

什么是一种简单/有效的方法将一组单词与一个空格组合在一起,但之前或之后没有空格?

我想在循环中组合所有内容后可以删除空格(类似于sum + =(term +""))......我不喜欢它.

最好是Java,Python或Ruby代码.

ruby python java string

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

在堆栈中还是在堆中分配变量引用的位置?

我有个问题

例如,当我在方法中声明变量时会发生什么.

void myMethod() {
    Ship myShip = new Ship();
}

在堆栈或堆中分配myShip引用的位置在哪里?

我认为在堆栈中我很困惑,因为我正在阅读J2ME游戏编程书"Java类被实例化到Java堆上"

所有的java clases?

提前致谢

java heap concurrency stack

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