小编Roe*_*oey的帖子

在.NET中序列化,在C++中反序列化

我有一个.NET应用程序,它以二进制格式序列化对象.这个对象是一个由几个字段组成的结构.

我必须在C++应用程序中反序列化并使用此对象.我不知道是否有任何C++序列化库,谷歌搜索没有太多.

实现这一目标的最快方法是什么?

提前致谢.Roey.

更新:我已经在我的.NET应用程序中使用Protobuf-net进行了序列化,相对容易.我还使用GetProto()命令获取protobuf-net生成的.proto文件.在.proto文件中,我的GUID字段得到一种"bcl.guid",但C++ protoc.exe编译器不知道如何解释它们!我该怎么办?

c# c++ serialization

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

如何在我的C++程序中使用COM dll

我希望在我的C++库中使用COM dll.我想的方法是#import dll的.tlb文件,我做了:

#import "mycom.tlb" no_namespace
Run Code Online (Sandbox Code Playgroud)

问题是,我不太清楚在哪里发表这个声明.它应该在H文件或CPP文件中吗?或者stdafx.h文件?我尝试将它放在.cpp文件中,仅用于测试.

在H文件中我声明了这个成员:

ILogicSecuredPtr m_pbLogic;
Run Code Online (Sandbox Code Playgroud)

(其中ILogicSecured是我想在COM dll中使用的接口)

然后我在构造函数中添加了这个来实例化接口:

CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured)); 
Run Code Online (Sandbox Code Playgroud)

(其中LogicSecured是实现接口的对象的名称)

在析构函数中我添加了:

CoUninitialize();
Run Code Online (Sandbox Code Playgroud)

但是,无论我在哪里尝试放置#import声明,都无法编译.它只是无法识别ILogicSecured对象.我在H文件中收到此错误:

Error   2   error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
Run Code Online (Sandbox Code Playgroud)

我还应该提一下,当我在ILogicSecuredPtr声明的F12(在Visual Studio中)时,它会把我带到tlh文件就好了.所以我知道它认出来了.

我在这做错了什么?

非常感谢.Roey

c++ com dll

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

Google Protocol Buffers - 固定大小的缓冲区?

使用Google Protocol Buffers,我可以为我编码的所有邮件设置最大大小吗?

如果我知道我编码的内容永远不会大于X字节,那么Google Protobuffs总会产生一个大小为Y的缓冲区,如果我给它一个较小的数据量,请将它填充到Y大小?

c# c++ protocol-buffers protobuf-net

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

C++项目编译为静态库,失败(链接器错误)作为动态库.为什么?

我有一个VS2008本机C++项目,我希望编译为DLL.

它只引用一个外部库(log4cplus.lib),并使用其功能.(当然也使用log4cplus的.h文件).

当我尝试将我的项目编译为静态库时,它会成功.当我尝试DLL时,它失败了:

1>MessageWriter.obj : error LNK2019: unresolved external symbol "public: static class log4cplus::Logger __cdecl log4cplus::Logger::getInstance(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?getInstance@Logger@log4cplus@@SA?AV12@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "class log4cplus::Logger __cdecl Log(void)" (?Log@@YA?AVLogger@log4cplus@@XZ)
Run Code Online (Sandbox Code Playgroud)

还有4个与log4cplus.lib中的函数相关的错误.

看起来真的很蠢..请帮帮我:)

谢谢!

编辑:

我链接到log4cplus.lib文件,它发现它很好.另外,log4cplus.lib是100%功能的,我在另一个项目中使用它没有任何问题.我的初衷是将我的项目编译为静态库并在我正在编写的另一个DLL中使用它,但是当这样做时,我在其他项目中得到了相同的链接器错误...

编辑#2:

导致链接器错误的函数是静态函数..这可能是问题的一部分吗?

c++ dll visual-studio-2008-sp1 log4cplus

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