编译jsoncpp错误:error LNK2019

本文介绍了在使用VS2010编译JSONCpp时遇到的链接错误:unresolved external symbol_WinMain@16,并提供了详细的解决方案。通过修改项目的配置属性,将子系统设置从Windows更改为Console,解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载jsoncpp源码后,导入vs2010创建工程,编译jsoncpp出现链接错误:

>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup


修改子系统设置即可:

Project -> Properties -> Configuration Properties -> Linker -> System ->SubSystem,原来是/subsystem:windows,这里改为(/SUBSYSTEM:CONSOLE)。


原因:

本是console程序,用vs打开时被当成了windows程序。


对编译jsoncpp来说,目标是要编译为lib,改成编译为lib后这个问题也就不存在了。

### 使用 `std::map` 的基本方法 在 C++ 中,`std::map` 是一种有序关联容器,它按照键的顺序存储键值对。下面是一些常见的操作及其代码示例。 #### 创建和初始化 `std::map` 可以使用多种方式创建并初始化 `std::map`: ```cpp #include <iostream> #include <map> int main() { // 方法一:默认构造函数 std::map<int, std::string> map1; // 方法二:通过列表初始化 std::map<std::string, double> map2 = {{"apple", 3.5}, {"banana", 2.0}}; // 插入元素 map1[1] = "one"; map1.emplace(2, "two"); } ``` #### 访问元素 可以通过下标运算符或者成员函数 `at()` 来访问 `std::map` 中的元素: ```cpp // 下标运算符 if (map1.find(key) != map1.end()) { value = map1[key]; } // at 函数会抛出异常如果 key 不存在 try { value = map2.at("apple"); } catch(const std::out_of_range& e){ std::cout << "Key not found!" << '\n'; } ``` #### 遍历 `std::map` 遍历整个 `std::map` 可以采用迭代器方式进行: ```cpp for (auto it = map2.begin(); it != map2.end(); ++it) { std::cout << (*it).first << ": " << (*it).second << "\n"; } // 或者更简洁的方法 for (const auto &[key, val] : map2) { std::cout << key << ": " << val << "\n"; } ``` #### 删除元素 删除单个或多个元素可利用 erase 成员函数完成: ```cpp // 移除特定项 map1.erase(1); // 清空所有项目 map1.clear(); ``` 关于性能方面,在大多数情况下,`std::map` 的插入和查找时间复杂度为 O(log n),而空间开销相对较大[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值