小编FRu*_*les的帖子

未定义的引用boost :: gregorian :: greg_month :: as_short_string()const

这被问了好几次然而我不知道我做错了什么.我试图将当前日期减去7.这是Main:

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/date_formatting.hpp>
#include <boost/date_time/gregorian/greg_month.hpp>


using namespace std;
using namespace boost::gregorian;

int main(int argc, char **argv) {

    time_t rawtime;
    struct tm *timeinfo;

    time (&rawtime);
    timeinfo = localtime (&rawtime);

    date cdate(timeinfo->tm_year+1900, timeinfo->tm_mon+1, timeinfo->tm_mday);
    cdate += date_duration(-7);

    string date = to_iso_string(cdate);
    cout << date << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误.

E:/include/boost/date_time/date_formatting.hpp:44: undefined reference to `boost::gregorian::greg_month::as_short_string() const'
E:/include/boost/date_time/date_formatting.hpp:49: undefined reference to `boost::gregorian::greg_month::as_long_string() const'
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?我以为我包含了必要的文件..

c++ boost date

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

UTF-8 和 TinyXML

由于某种原因,我无法正确从 xml 文件读取数据。\n例如,我得到的不是“Schr\xc3\xbcder”,而是类似“Schr\xc3\x83\xc2\xbcder”的内容。

\n\n

我的代码:

\n\n
tinyxml2::XMLDocument doc;\n\nbool open(string path) {\n    if(doc.LoadFile(path.c_str()) == XML_SUCCESS)\n        return true;\n    return false;\n}\n\n\n\nint main() {\n    if(open("C:\\\\Users\\\\Admin\\\\Desktop\\\\Test.xml"))\n    cout << "Success" << endl;\n\n    XMLNode * node = doc.RootElement();\n    string test = node->FirstChild()->GetText();\n\n    cout << test << endl;\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

XML 的一部分:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<myXML>\n    <my:TXT_UTF8Test>Schr\xc3\xbcder</my:TXT_UTF8Test>\n</myXML>\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,如果我将其转换为 ANSI 并将编码类型更改为“ISO-8859-15”,则它可以正常工作。

\n\n

我读到类似“LoadFile( filename, TIXML_ENCODING_UTF8 )”之类的内容应该有帮助。然而事实并非如此(错误:无效参数,它只需要一个 const char)。我有最新版本的 TinyXML2(我猜?)。我几分钟前从https://github.com/leethomason/tinyxml2下载了它下载了它。

\n\n

有任何想法吗?

\n\n

编辑:当我将字符串写入 .xml 或 .txt 文件时,它工作正常。eclipse ide 控制台可能存在一些问题。无论如何,当我尝试通过电子邮件发送字符串时,我也遇到了同样的问题。这是邮件发送脚本:

\n\n
bool sendMail(std::string params) {\n\n …
Run Code Online (Sandbox Code Playgroud)

c++ unicode encoding tinyxml

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

CakePHP 2复合主键

假设我有一个名为position的表,我保存每台计算机,显示器或打印机的坐标.

+-----------------+
| key | type | id |
+-----------------+
| 1   | PC   | 1  |
| 2   | PC   | 2  |
| 3   | MO   | 1  |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

在这种情况下,type和id是主键.我读过Cake不支持复合主键,并建议使用直接查询.那真的没有解决方法吗?将PC的坐标直接保存在PC表或表格中,尤其是PC位置是否更好?这很难吞下去.

mysql sql cakephp

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

GetSubKeyNames 不返回所有键

我想在客户端上安装软件。我也使用 WMI 和注册表。

我在HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL下找到大部分信息

但是,例如 Dropbox,不会出现在那里。Dropbox 位于HKCU下,所以我也想阅读这些密钥。很简单,我想,因为路径是一样的,只是 RegistryHive 发生了变化。

问题

当我在 CurrentVersion 中使用函数 GetSubKeyNames 时,我看不到键UNINSTALL。

var root = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32)

var key = root.OpenSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION") // works
var key = root.OpenSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\Uninstall") // doesnt work
Run Code Online (Sandbox Code Playgroud)

我也用 RegistryView.Registry64 尝试了这个 - 我得到了相同的结果。

当我使用 GetSubKeyNames 时打印出的内容如下:

Device Metadata
Explorer
Group Policy
GrpConv
Internet Settings
Media Center
Run
Shell Extensions
Telephony
ThemeManager
WinTrust
Run Code Online (Sandbox Code Playgroud)

有谁知道我该如何解决这个问题?

c# registry

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

NodeJS Redis 监听器

是否可以在 nodejs 中侦听来自 redis 的更改值事件?

情况: 我有一个 NodeJS 应用程序,它显示来自另一个应用程序的实时数据(同一服务器上的本机应用程序,我们称之为 foo 并让我们调用节点应用程序栏)。

foo 将机器状态保存在 redis 键“state”中。Bar 注册并显示它。你怎么能捕捉到这个事件?

编辑 Pierres 解决方案可以很好地获取密钥,但如何检索值?我以这种方式尝试过,但是发生了 parseError :

var redis = require("redis");
var client_redis = redis.createClient();

client_redis.config('set', 'notify-keyspace-events', 'KEA');
client_redis.subscribe('__keyevent@0__:set');
client_redis.on('message', function(channel, key) {
  client_redis.get(key, function(error, result) {
    if (error) console.log(error);
    else console.log(result);
  });
});
Run Code Online (Sandbox Code Playgroud)

错误

$ { ReplyError> at parseError (/home/pi/Website/node_modules/redis-parser/lib/parser.js:181:12) -bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

编辑 #2

似乎client_redis.subscribe('...')阻止客户端读取值到相应的键。我添加了第二个读取值的客户端。

工作示例:

var redis = require("redis");
// Client for subscription
var subscriptionClient = redis.createClient(); …
Run Code Online (Sandbox Code Playgroud)

listener redis node.js

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

如何为每个文件设置#define?

#define在C#中的目的究竟是什么?

我目前使用https://github.com/citrix/ShareFile-NET上的ShareFile .NET API开发应用程序

但是,样本不会运行,因为我要调用的函数在此块中:

 #if Async

 #endif
Run Code Online (Sandbox Code Playgroud)

我知道我能做到

 #define Async
Run Code Online (Sandbox Code Playgroud)

在文件的顶部,但是我必须为每个在#if块中具有功能的文件执行此操作吗?这是为了什么目的?

c# c-preprocessor

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

标签 统计

c# ×2

c++ ×2

boost ×1

c-preprocessor ×1

cakephp ×1

date ×1

encoding ×1

listener ×1

mysql ×1

node.js ×1

redis ×1

registry ×1

sql ×1

tinyxml ×1

unicode ×1