`

C++ 问题小记

    博客分类:
  • C++
阅读更多

以前都是搞java的,C++荒废了好几年。这几天需要用java调dll,所以也多多少少复习了一下C++。

本文记一下遇到的小问题,今后用到可以查一下。

 

1,手动使用cl命令编译cpp,出现“fatal error C1034: XXX.h: no include path set”问题

问题解析:出现这种no include问题,一般是因为没有设置INCLUDE环境变量问题导致的。编译器不知道去哪里寻找include的文件,所以必须设置INCLUDE环境变量。

解决:“我的电脑”->"属性"->"高级"->"环境变量"->"系统环境变量"->新建一个环境变量“INCLUDE”,值为:“C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE;C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE;C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE”(具体看你VC的安装路径了,我装的是VC6.0),之后手动使用“cl /c ”命令编译就不会出现上述问题了。

 

ps:顺路也可以添加LIB环境变量,值为“C:\Program Files\Microsoft Visual Studio\VC98\LIB;C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB”(设置这个是为了让连接器linker在连接阶段知道本地库lib的位置)

 

2,.NET 手动组册COM组件,出现提示regasm不是内部程序的错误,这时候可以将regasm所在目录添加到环境变量path后面去(加之前先添加分号";"),regasm路径:“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”。这下可以找到regasm程序了。

但是组册却出现下面的错误:“RegAsm : error RA0000 : “(路径)\XXX.dll”不是有效的 .NET 程序集,因此未能加载它” 。

查找资料后才发现,是.NET Framework的版本没有找对,我的是4.0版本的,所以要选4.0对应的目录,回到“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”的上一级目录,找到4.0的目录:“C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319”,修改了path,再运行命令,OK了(大家伙选自己对应的.NET FrameWork的版本目录就可以了)

 

 

3,string 转 cstring 出现乱码

 

  string msg("test");
  CString tempM(msg.c_str());
  tempM.Format(_T("%s"),msg.data());
 

  转换之后的CString会变成乱码,原因是string是单字节,CString是双字节的。所以format转换有问题。

可以用CString的构造函数直接转换:

 

 

 string msg("test");
CString tempM(msg.c_str());

 这样更简单。

 

 

 

4,VS2010中 Active X control test container已经不是像VC6.0中一样作为一个附件程序了,而是作为一个案例sample,位置在Microsoft Visual Studio 10.0\Samples\1033\VC2010Samples.zip\C++\MFC\ole\TstCon

分享到:
评论

相关推荐

    源代码·Qt/C++使用小记9

    Qt/C++使用小记9【使用UDP创建连接发送消息/传输单个文件】

    C++编程小记,经典收藏

    - 不再需要担心`0`与指针之间的类型不匹配问题。 - **示例**: ```cpp void foo(int* p) {} void bar(std::shared_ptr<int> p) {} int* p1 = nullptr; foo(nullptr); bar(nullptr); ``` #### 四、Range-...

    C++写的家庭小记账本

    1. **面向对象编程**:C++是一种支持面向对象编程(OOP)的语言,这使得开发者能够将现实世界的问题抽象成类和对象,如“账户”类和“交易”类,使得代码结构清晰,易于维护。 2. **数据结构与算法**:在记账本中,...

    c++_关于公路收费的问题

    //void cars() 统计小客车的车辆数和收费小记 //void trucks()统计卡车的车辆数和收费小记 //void buss() 统计公汽的车辆数和收费小记 //void process()收费处理 //void display() 输出收费统计信息 #include const ...

    数据结构习题总结 拾荒小记

    《数据结构习题总结 拾荒小记》是一份以C++语言实现的数据结构算法集,涵盖了严蔚敏教授经典教材中的80%算法。这份资料旨在帮助学习者巩固和深化对数据结构的理解,同时也为社区提供了一份宝贵的资源。 首先,让...

    VC学习小记

    《VC学习小记》 学习Visual C++,也就是VC,是一项技术性强且深入的工程,尤其对于初学者来说,需要有良好的C/C++基础作为支撑。C++的基础知识包括语法、面向对象编程概念以及模板等高级特性,这些都是使用MFC...

    C++派生访问说明符小记(推荐)

    在C++编程语言中,派生访问说明符是控制继承关系中访问权限的关键元素。当一个类(称为派生类)从另一个类(称为基类)继承时,它可以指定如何访问基类的成员。派生访问说明符有三种类型:`public`、`protected` 和 ...

    如何在Visual Studio(VS)里使用libsvm工具箱 与博文相关的代码包

    VS2010 使用 libsvm (libsvm 3 18)工具箱的过程 目前互联网搜索数据libsvm工具箱在 VS 中以C++工程呈现的讲解非常稀少而且对初学者有一定的难度 所以在笔者完成工作后写了这篇小记或称为简单教程 呈现给大家 ...

    C/C++——2

    课堂小记 数据越界的危害 1.越界短 会覆盖其他变量的值 2.越界过长 会出现段错误 char buf1[10]=“123”; char buf[10]=“abc”; strcat(char* buf1,char* buf2); //把字符串buf2追加到buf1的尾部,只有buf1被改变. ...

    Thrift小记

    Thrift的主要目标是解决大规模分布式系统中的数据交换问题,它简化了服务之间的通信,并提供了一种高性能的解决方案。 Thrift的IDL类似于其他IDL,如CORBA的IDL或protobuf的.proto文件,用于定义服务、结构体、枚举...

    VC数据库编程小记ADO访问SQL Server2005

    为了能够在 Visual C++ 应用程序中使用 ADO 访问 SQL Server2005 数据库,首先需要进行必要的环境搭建及配置工作。具体步骤如下: 1. **引入 ADO 类库**:在项目的预编译头文件(通常是 stdafx.h 或者 precompiled ...

Global site tag (gtag.js) - Google Analytics