首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教 C++ 里面使用 Makefile 进行编绎时,没有 .h 可否正常编绎

2012-06-13 
请问 C++ 里面使用 Makefile 进行编绎时,没有 .h 可否正常编绎?现在工程里面有一个 myapp.h 文件,里面使用

请问 C++ 里面使用 Makefile 进行编绎时,没有 .h 可否正常编绎?
现在工程里面有一个 myapp.h 文件,里面使用了 #include <xxxxx.h> ,即使用了第三方程序的头文件 <xxxxx.h>,而现在这个“第三方”只有一个 .lib 的类库文件,我想上面的 <xxxxx.h> 应该是属于这个 .lib 类库里面的,

但是,我尝试使用 Makefile 编绎时,编绎出错,报:找不到 xxxxx.h 文件或文件不存在。

请问一下,在只有 .lib 的情况下,是否不需要 “第三方” 同时提供 .h 文件的吧???

还是说,“任何第三方程序供应商” 在提供 .lib 文件的同时还要提供 .h 文件给到客户端,才能正常编绎???????

请各位指点一下,搞不清楚。

[解决办法]
不需要怎么编译通过啊?

使用 使用gcc的 -I(头文件路径)

进行编译吧。
[解决办法]
对了,是lib的话是不是静态库?
静态库的话不适用-l进行连接,直接和obj文件一起链接生成可执行文件。
[解决办法]
理解理论远比解决一个问题重要:

1,单一源文件编译时依赖声明,所以要调用第三方函数,需要包含其提供的头文件。
2,所有目标文件进行链接,如有动态库需要此时链接进来,以便被调用函数可以找得到定义。
3,严格注意第三方库lib库是C++导出还是C导出,这决定了你的源文件包含第三方头文件时是否需要指定自己的语言环境以便链接阶段可以匹配第三方lib中的导出函数符号。
[解决办法]

探讨

引用:

理解理论远比解决一个问题重要:

1,单一源文件编译时依赖声明,所以要调用第三方函数,需要包含其提供的头文件。
2,所有目标文件进行链接,如有动态库需要此时链接进来,以便被调用函数可以找得到定义。
3,严格注意第三方库lib库是C++导出还是C导出,这决定了你的源文件包含第三方头文件时是否需要指定自己的语言环境以便链接阶段可以匹配第三方lib中的导出函数符……

[解决办法]
find . -exec grep _INSTALLABLE_APPL{} \;

找一下

[解决办法]
grep --help
[解决办法]
-D定义的宏没必要非在代码中出现啊。

你的代码不是自己写的吗?
用没用这个宏肯定自己最清楚啊。

如果非要知道哪个文件用了。
在你的工程相关的所有目录下执行下面的命令查找。 
grep "_INSTALLABLE_APPL" * -R
[解决办法]
宏是预编译阶段使用的,-Dxxx就是#define xxx。
[解决办法]
程序里应该有#ifdef DEBUG_ON或者if defined DEBUG_ON的字眼,找不到说明此宏无用。

热点排行