![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
chuwachen
这个作者很懒,什么都没留下…
展开
-
tlb与dll文件区别
tlb文件:com类型库文件,它包含接口相关信息。在需要使用对应com类的模块里,通过"#import xxx.tlb"来调用。dll: 动态连接库,它包含二进制代码,资源... , VC可以把tlb作为资源编译到dll中。在VC下#import "A.tlb" no_namespace;编译后产生A.tlh和A.tli两个文件,不生成namespace,如果没有no_namespace,则生成的内容都在namespace A中。如果dll中含有tlb资源,则也可以使用#import "xxx.dll"来生原创 2011-02-18 17:29:00 · 31733 阅读 · 3 评论 -
const vs non-const
It is OK to pass a non-const variable to a function with const parameter; it is incorrect to pass a const variable to a function with non-const parameter.non-const function can invoke const function;原创 2012-04-12 11:53:24 · 538 阅读 · 0 评论 -
确切定位c++代码中异常抛出位置的两个方法 (以VS2010调试为例)
有时候程序crash了,但是不能定位具体的exception在哪里throw的(因为可能函数调用很深,并且有很多try--catch),举个简单的例子:class Test{public:Test(int i) : m_i(i) {}void f(){cout throw new Test(6);}private:int m_i;};void f原创 2011-09-17 11:15:15 · 6625 阅读 · 0 评论 -
Including header files using "" vs <>
when using #include to include header files,If using , the compiler will search the header file in the system header folder.If using "header.h", the compiler will search the header file in the curre原创 2012-04-12 11:16:17 · 472 阅读 · 0 评论 -
C++调用C#的dll
C++调用C#的dll的三个方法:1. 如果C++使用clr语法编译: 通过#using(比如 #using "xxx.dll")引入C#的dll,在程序中调用C# dll中的变量或函数(采用正确的访问托管对象,即:使用'^',而不是'*')。2. 如果C++没有使用clr语法编译:先用managed C++将C# dll重新封装以后,供C++调用。3. 将C# dll封装原创 2011-01-13 11:11:00 · 2159 阅读 · 0 评论 -
C#如何调用c++静态库(lib)
可以用CLR(新)或者Managed c++(老)将lib封装成managed dll供C#直接调用。将lib封装成native dll,C#中通过DllImport调用dll。将lib封装成native dll, 再用CLR封装native dll成managed dll供C#直接调用。将lib封装为COM,在C#中调用COM。原创 2011-09-21 14:01:10 · 33805 阅读 · 8 评论 -
静态链接库和动态链接库
静态链接库(lib):静态库是一个或者多个obj文件的打包,从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。代码中不需要任何关键字来导出函数。动态链接库 (DLL) 是作为共享原创 2011-09-20 17:07:13 · 1586 阅读 · 0 评论 -
managed code和unmanaged code混合debug
首先:1. managed code的项目属性中debug页里,"Enable unmanaged code debugging"选上。2. unmanaged code项目属性的debug页里,Debugger Type设为Mixed。其次:原创 2011-09-20 13:21:02 · 3484 阅读 · 0 评论 -
Google C++ 编程规范——背景
<br /><br /><br />Google的开源项目很多都将C++作为主要开发语言。C++程序员都知道,正是因为C++这门语言的许多强大特性,导致了它的复杂性,使得C++代码更容易产生Bug,不易阅读和维护。<br />本规范通过对一些最佳实践和禁忌的详细描述来说明如何运用C++语言的复杂特性。本规范可以帮助程序员在保证代码可维护性的前提下,利用C++的各种特性高效地进行开发。<br />规范(Style,在英文中是风格的意思)即可读性,是指C++编码的规则: “风格(Style)”这个术语并不十分准转载 2011-03-28 14:27:00 · 609 阅读 · 0 评论 -
Google C++ 编程规范——作用域
<br /><br />1 作用域<br />1.1 命名空间(namespace)<br />在.cc中提倡使用匿名命名空间(unnamed namespace[i])。而定名命名空间(named namespace)的命名应该以项目及(如果不在根目录的话)项目中的路径来命名。不要使用using关键字。<br />定义:命名空间将作用域分割为相互独立的,具有特定名称的作用域。这样就可以避免在全局作用域中容易产生的同名冲突。<br />优点:在类提供的(有层次的)名称隔离方法基础上提供了转载 2011-03-28 14:26:00 · 747 阅读 · 0 评论 -
Google C++ 编程规范——头文件
<br /><br />一般地,.cc[1]文件都有一个对应的.h文件。但是有一些常见的例外情况,比如单元测试和只含有main()函数的小型源文件。<br />头文件的正确运用,可以极大地提高代码的可读性,控制代码的规模和提高软件的性能。<br />下列规则有助于避免头文件使用中容易产生的诸多错误。<br />1.1 利用 #define防止多重包含<br />头文件应该使用#define定义预编译标识符来标识当前头文件,以来避免多重包含。标识符命名规则是:[项目名]_[路径名]_[文件名]_H_。转载 2011-03-23 13:09:00 · 1407 阅读 · 0 评论 -
deep copy vs shallow copy
When the owned variables are immutable types, a shallow copy is sufficient. A deep copy is possible, but would only result in additional memory use.Coming from C++ POV, there would be one scenar原创 2012-09-14 18:27:16 · 594 阅读 · 0 评论