杂谈之封装main或WinMain启动函数
2016-04-10 19:58
531 查看
作者:i_dovelemon
日期:2016 - 04 - 10
来源:CSDN
主题:VS,静态库,类静态函数
(2)接着,我添加两个文件,分别为testlib.h和testlib.cpp,内容如下:
(3)然后编译,生成testlib.lib文件
(4)我在新建了另外一个Win32 Console的EXE程序,添加main.cpp文件,并且将上面生成的testlib.lib和testlib.h放在新建的工程里面
(5)main.cpp中添加如下的代码:
(6)编译运行,之后发现的确能够运行。而且输出了我想要输出的printMsg中的内容。
同时,我也很好奇,为什么类的static函数可以这样的去实现,而单纯的C函数为什么不可以这样去实现?留待下次去解决!
日期:2016 - 04 - 10
来源:CSDN
主题:VS,静态库,类静态函数
引言
公司的上个项目已经结束了,加入了新的项目。新项目使用的是公司正在研发中的渲染库,趁着项目交接间的空闲时间,了解了下这个新的库。一般我初接触一个库,我都会先按F11,一遍一遍的跑几次,看看它的基本流程框架。当我使用同样的方法去了解公司的代码库的时候,我发现了一个很奇怪的现象。公司库里面的启动函数WinMain居然在项目工程里面找不到,而是在静态代码库里面。这个我以前从来没有遇到过。所以很好奇,就试着去试验了下。试验
(1)首先,我在VS2012中新建了一个Win32 Console程序的静态库工程(2)接着,我添加两个文件,分别为testlib.h和testlib.cpp,内容如下:
#ifndef __TESTLIB__H_ #define __TESTLIB__H_ int main(); class Test { public: static void printMsg(); }; #endif
#include "stdafx.h" #include <iostream> #include "testlib.h" int main() { Test::printMsg(); system("pause"); return 0; }
(3)然后编译,生成testlib.lib文件
(4)我在新建了另外一个Win32 Console的EXE程序,添加main.cpp文件,并且将上面生成的testlib.lib和testlib.h放在新建的工程里面
(5)main.cpp中添加如下的代码:
#include "testlib.h" #pragma comment(lib, "testlib.lib") #include <iostream> void Test::printMsg() { std::cout<<"HelloWorld" << std::endl; }
(6)编译运行,之后发现的确能够运行。而且输出了我想要输出的printMsg中的内容。
其他
细心的读者可能发现,我上面还有一个很奇怪的现象,那就是我在testlib中定义了一个类Test,并且类Test中存在一个未被实现的printMsg函数。而这个函数我在我的EXE项目中实现了它,并且最终也能够成功的调用到这个函数。而这个技巧正是我们扩展封装之后的main和WinMain的入口。我们可以通过类似的方法,向Lib中注入一个我们自己的App类,然后让lib运行我们的App,这样就能够实现完全面向对象的编程操作了。同时,我也很好奇,为什么类的static函数可以这样的去实现,而单纯的C函数为什么不可以这样去实现?留待下次去解决!
相关文章推荐
- http://blog.csdn.net/rainkin1993/article/details/8592617/
- 深度 | 邢波教授谈人工智能科学路径:为人工智能装上「无穷动」引擎
- Genesis Block (Starting a New Blockchain Instance)
- 02 VoLTE - Domain Selection 和 VoLTE Signaling Overview
- poj3250 Bad Hair Day
- 出现( linker command failed with exit code 1)错误总结
- LeetCode 265. Paint House II(房子涂色)
- Google用不了解决方法(添加gmail用不了的方法)
- mybaits注解
- 非常阔气的Raid磁盘阵列
- email正则表达式 验证邮箱格式
- [人工智能]IBM Watson人工智能API|一步步创建智能微信翻译官|第一章
- 2014年山东省第五届ACM--angry_birds_again_and_again
- mybaits 框架运用
- Mybaits学习过程中出现的错误
- 题目1436:Repair the Wall
- STL学习笔记— —无序容器(Unordered Container)
- Pass-Muraille
- Deeplearning ,AI,Machine Learning 的关系
- [www.51kuaisou.com]最全的maven中央仓库