![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
wangjingfei
这个作者很懒,什么都没留下…
展开
-
在Visual Studio 2005下编写DLL程序
其实VS下面开发C++的DLL还是很方便的,而且Release的时候也很方便,只要把模块的只能划分清楚,封装好不同的DLL工程,在一个主工程里面引用这些不同的DLL工程还是很不错的,这样发布的时候有一个主工程的EXE 和不同的DLL就可以了,不论是调试还是Release都比较简单,下面就简单说说开发的过程。 转自:http://hi.baidu.com/ym_sheng/blog/item转载 2009-10-16 16:43:00 · 5226 阅读 · 5 评论 -
长见识了,VS链接中的重定义错误
<br />今天在编写一个程序,这个程序由四个模块组成,最终分别生成四个动态链接库,前三个很顺利的完成了,可是到了最后一个,错误出现了。<br /> <br />编译完全正确,可是Link时报以下错误:<br />msvcprtd.lib(MSVCP71D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::ba原创 2010-09-27 19:50:00 · 7631 阅读 · 1 评论 -
控制linux动态链接库(so, standard object)导出函数
参考:http://www.lampchina.net/article/htmls/201006/Mjg4MDMy.html注意:参考文献中有一些函数是不能编译通过的。编译环境:gcc 4.4.3在windows中,我们可以指定__declspec(dllexport)定义来控制导出函数,在linux下,我们也有类似的控制参数。在GCC帮助文档 -fvisibility=default|internal|hidden|protected参数下有这样一段描述:a superior solution made原创 2010-06-25 11:24:00 · 20243 阅读 · 3 评论 -
使用transform函数转换字符串string的大小写
首先看一下transform函数的用户手册:template OutputIterator transform ( InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperator op );template class OutputIterator, class BinaryOperator > OutputI原创 2010-06-25 11:50:00 · 6310 阅读 · 1 评论 -
在 linux 下使用 CMake 构建应用程序
CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了比 autoconfig 更简洁的语转载 2009-12-30 09:27:00 · 1387 阅读 · 0 评论 -
多核处理器下提高make的效率
Linux开源程序编译往往会需要较长时间,多核处理器的应用可以大大缩短编译所需要的时间。 默认情况下,make并没有将多核处理器的性能发挥到极限。相反,它只使用了其中一个核心。 make的-j参数可以使make进行并行编译。make该参数的帮助如下:-j [N], --jobs[=N] Allow N jobs at once; infinite jobs w原创 2009-12-09 10:46:00 · 39186 阅读 · 9 评论 -
严密程序必备:LINT
lint使用简介 LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打开所有的编译开关,如果一定要关闭某些开关,那么要给出关闭这些开关的正当理由。 可想而知,如果从我们编码后第一次编译程序时就使用LINT来转载 2010-02-04 17:18:00 · 1841 阅读 · 0 评论 -
如何:在各种字符串类型之间进行转换(zz)
zz from:http://msdn.microsoft.com/zh-cn/library/ms235631(VS.80).aspx本主题演示如何将各种 Visual C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String。在所有情况下,在转载 2010-02-04 17:54:00 · 728 阅读 · 0 评论 -
给你的C程序加上颜色
标准C控制台程序也可以自定义文字输出颜色,让打印信息更鲜明,在debug的时候特别有用。方法很简单:转自:http://www.diybl.com/course/3_program/c/c_js/20090303/157456.html先从一个例子开始printf("/033[31m ####----->> /033[32m" "hello/n" "/033[m"); 颜色分为转载 2009-12-04 10:44:00 · 1767 阅读 · 3 评论 -
在DLL编程中调用模版类时出现的类似"class“XXX”需要有 dll 接口由 class“XXX”的客户端使用"的warning的解决方案
在DLL编程中, 如果调用模版类, 则可能出现类似以下的错误(以CString的使用为例):warning C4251: “CLogFile::m_strFileName”: class“ATL::CStringT ”需要有 dll 接口由 class“CLogFile”的客户端使用 解决方法如下:在调用该模板类之前, 先加入以下声明, 将模版类导出(export):templat原创 2009-10-30 19:53:00 · 10362 阅读 · 1 评论 -
DLL编程中的"error LNK2001: 无法解析的外部符号"错误
在VC++中调用DLL库的时候, 需要在项目编译选项中指定需要寻找的DLL库的头文件路径和DLL路径. 然而在指定这些路径之后, 编译时仍然会出现类似的错误:error LNK2001: 无法解析的外部符号...这是因为, 项目的设置中仍然需要指定DLL对应的.lib的文件名称, DLL库文件只告诉工程到哪里去找这个DLL, 但并没有指定要寻找哪一个文件. 于是就需要手动指定.lib的名称原创 2009-10-29 19:59:00 · 7627 阅读 · 0 评论 -
STL中的std::string与Unicode的使用
是的,一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单。基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于 _UNICODE 的值:// abridged from tchar.h#ifdef _UNICODEtypedef wchar_t TCHAR;#define __T(x) L ## x#elsetypedef char TCH转载 2009-10-26 17:57:00 · 4635 阅读 · 0 评论 -
Visual C++中min()和max()函数的使用
标准库在头中定义了两个模板函数std::min() 和 std::max()。通常用它可以计算某个值对的最小值和最大值。可惜在 Visual C++ 无法使用它们,因为没有定义这些函数模板。原因是名字min和max与中传统的min/max宏定义有冲突。为了解决这个问题,Visual C++ 定义了另外两个功能相同的模板:_cpp_min() 和 _cpp_max()。我们可以用它们来代替std转载 2009-10-21 15:09:00 · 40010 阅读 · 0 评论 -
Socket编程:由Linux向Windows移植问题
转自:http://www.cic.tsinghua.edu.cn/jdx/book1/CHAPTER3.htm 在源文件开始增加#include 语句。调用WSAStartup()函数初始化Windows Sockets DLL,并在结束时调用WSACleanup()函数通知Windows Sockets DLL释放资源。将套接字的类型为int改为SOCKET。获取、设置转载 2009-10-21 17:35:00 · 1363 阅读 · 0 评论 -
C语言中inet_ntoa()的内存管理
<br />今天在调试一段程序,输出结果总是错误,不知道什么原因,代码如下:<br />#include <sstream>#include <iostream>#include <netinet/in.h>#include <arpa/inet.h>using namespace std;void print_address(struct in_addr addr1, struct in_addr addr2){ ostringstream oss; oss << inet原创 2010-12-22 16:29:00 · 4614 阅读 · 0 评论