我正在尝试将一个外部库(PHP Simple DOM Parser,http://simplehtmldom.sourceforge.net/index.htm)添加到Symfony2项目中.我参加了一个教程,解释了如何将第三方库包含在Symfony2中http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2.
我设置了一个类文件,如:
# vendor/phpsimpledom/lib/Phpsimpledom/simple_html_dom.php
require_once __DIR__.'/src/simple_html_dom.php';
class Phpsimpledom_Phpsimpledom extends simple_html_dom_node {
}
Run Code Online (Sandbox Code Playgroud)
并在我的Autoloader(autoload.php)中注册了我的课程:
$loader->registerNamespaces(array(
...
'Phpsimpledom' => __DIR__.'/../vendor/phpsimpledom/lib/',
...
),));
Run Code Online (Sandbox Code Playgroud)
我打电话给:
$phpsimpledom = new \Phpsimpledom();
Run Code Online (Sandbox Code Playgroud)
但这给我带来了一个错误(致命错误:未找到类'simple_html_dom_node').
但是:库的主文件(simple_html_dom.php)由不属于类的函数组成.
当我尝试直接使用该文件时,它也不起作用:
$loader->registerNamespaces(array(
...
'Phpsimpledom' => __DIR__.'/../vendor/phpsimpledom/lib/Phpsimpledom/src/simple_html_dom.php',
...
),));
Run Code Online (Sandbox Code Playgroud)
任何提示?
谢谢!
我想编写一个C++库,默认情况下不是头文件,但可以用作定义NOLIB宏的头文件库.
我见过两种方法:
foo.h中
#if !defined(FOO_H)
#define FOO_H
#if defined(NOLIB)
# define MYINLINE inline
#else
# define MYINLINE
#endif
class foo
{
// ...
};
#if defined(NOLIB)
# include "foo.cc"
#endif
#endif // include guard
Run Code Online (Sandbox Code Playgroud)
foo.cc
#if !defined(NOLIB)
# include "foo.h"
#endif
MYINLINE void foo::something() { ... }
Run Code Online (Sandbox Code Playgroud)
foo.h中
#if !defined(FOO_H)
#define FOO_H
#if defined(NOLIB)
# define MYTEMPLATE template<bool DUMMY>
# define MYFOO foo_impl
# define MYFOO_T foo_impl<DUMMY>
#else
# define MYTEMPLATE
# define MYFOO …Run Code Online (Sandbox Code Playgroud) 我已经尝试在官方CMAKE维基上找到这些信息以及搜索SO(目前正在等待提升下载所以我可以通过源代码查找他们是如何做到的).我希望这里的某个人能够帮助完成这项工作,或者指出我正确的答案方向!
我有一个包含多个组件的项目.现在,该项目具有库和应用程序的子目录.我正在尝试重构项目并在各个存储库中安装应用程序并导出库.
其他项目如何使用以下命令(具体来说,指定哪些组件):
FIND_PACKAGE(Boost REQUIRED COMPONENTS系统date_time文件系统)
我想为我自己的项目使用相同的系统:
FIND_PACKAGE(项目需要组件查看gui执行分析)
您将提供的任何帮助将不胜感激.
C++ 拥有的一件事是多个字符串,或者更确切地说是字符类型:char, wchar_t, char16_t, char32_t. 因此,我们有不同的字符串类型定义:std::string,std::wstring,std::u16string和std::u32string,这是不同的字符串类型。
而且还不止于此,如果我们谈论的是 Windows 和 COM,还有平台类型,例如BSTRs。我们甚至还没有开始谈论字符编码。
如果您正在构建一个新库,其中一项要求是支持所有这些字符串类型或字符类型,您会怎么做?让我们暂时忘记字符编码。
我正在考虑这个问题,并提出了一些选择,但没有一个是理想的。假设您有一个registry_key类,它必须支持所有这些字符类型,并且其 OM 的一部分或多或少(此处仅说明了其中的一部分):
class registry_key
{
public:
registry_key(unspecified_string_type keyname);
unspecified_string_type name() const;
unspecified_string_type path() const;
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它:
registry_key key("HKLM\\Software\\Adobe");
std::string name = key.name();
Run Code Online (Sandbox Code Playgroud)
但是,它必须支持其他字符串类型。此外,没有要求registry_key就字符类型而言,整体必须保持一致,或者对单个字符类型进行操作。您可以调用构造函数并传递 aconst char*但将键的名称作为 a 获取u16string。这是底层平台的反映,它允许你在同一个api集合内调用宽( XxxW)和窄( XxxA) api。这种行为是需要的。
对于构造函数(或带参数的事物),这是微不足道的,因为可以推导出类型。但对于返回字符串但不接受任何输入的函数,它不能。
就选项而言,我有:
1)使用字符类型模板整个注册表项,方法basic_string与stl 中的其他类型相同。所以你会
wregistry_key key(L"HKLM\\Software\\Adobe");
std::wstring name = …Run Code Online (Sandbox Code Playgroud) 众所周知,在分析 Haskell 应用程序时,所有依赖项都已安装有分析信息。这是好的,但与具有哈斯克尔包一个问题出现-auto-all在他们的.cabal文件。这意味着我将永远看到他们的分析信息,即使这与我无关。
请允许我举一个例子,说明这是有问题的。我正在构建一个小游戏引擎,并且在我的游戏循环加载纹理等之前我做了很多工作JuicyPixels。这不是分析有趣的代码 - 我对分析游戏循环本身很感兴趣。但是,由于使用JuicyPixels构建自身-auto-all,因此似乎没有办法从分析中排除此信息。结果,我最终得到了数百条只是噪音的分析线。
是否可以去除所有JuicyPixel调试信息(或任何库,在一般情况下)?
我在 64 位 Ubuntu、Linux 上编译适用于 32 位 unix 系统的代码时遇到问题。有没有人有任何想法可能是什么问题?
gcc main.o test.o render.o transform.o model.o vector.o color.o -o the_thing -lSDL
/usr/bin/ld: transform.o: undefined reference to symbol 'cos@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud) 在Unix群集上作为批处理作业运行R脚本时遇到问题。问题是当尝试在环境中加载库时,R无法找到该库。我举一个例子。我将使用基本的R脚本名称sess.R:
print(.libPaths())
library("gtools")
print(sessionInfo())
Run Code Online (Sandbox Code Playgroud)
如果我只是使用以下命令从命令行运行此脚本:
$ Rscript sess.R
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[1] "/usr/lib64/R/library" "/usr/share/R/library"
R version 3.2.3 (2015-12-10)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.6 (Final)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets base
other attached packages:
[1] gtools_3.5.0
Run Code Online (Sandbox Code Playgroud)
库“ gtools”已正确加载,脚本正在运行。但是,如果我编写一个简单的批处理作业(我将在该作业中包含几个可选参数,包括错误和输出文件),例如:
#!/bin/bash
#SBATCH --output=sess.out
#SBATCH --error=sess.err
Rscript sess.R
Run Code Online (Sandbox Code Playgroud)
一秒钟后作业失败。我得到的两个输出文件当然是sess.out和sess.err。Sess.out包含库目录:
[1] "/usr/lib64/R/library" "/usr/share/R/library"
Run Code Online (Sandbox Code Playgroud)
这似乎与从命令行运行Rscript时的相同,所以那里没有错误。但是,由于脚本已终止,因此无法打印Info Session。sess.err文件包含以下错误:
Error in library("gtools") : there is …Run Code Online (Sandbox Code Playgroud) 我目前决定在生产应用程序中使用颤振。我对这个平台很陌生。我正在研究一些可能成为项目痛点的领域,看看颤振是否会节省我们在这个项目中的时间。我对其中一些点有一些问题。
我似乎找不到有关如何将 3rd 方库成功集成到项目中的明确说明。我正在尝试导入可用于 Android 的 3rd 方信标库。我还尝试导入其他 sdk,以便专门为开发工作的每一方构建。即 iOS-network-library 和 Android-network-library。
我还没有找到任何有效的具体说明。有人可以指出我的教程或解释我应该如何做到这一点。
谢谢
在 Windows 上开发 C/C++ 时,您将第三方库和头文件存储在哪里?
在 Linux 上开发时,包管理器通常将第三方库安装到/usr/lib和/usr/include. 所以我知道去哪里找。
我刚刚开始在 Windows 上开发,并且错误地安装了库,C:\Program Files由于 UAC 和 Windows 10 上的权限查找,这是一个坏主意。
是否有某种最佳实践?提前致谢