【求助】又是令人抓狂的LNK2019:C++工程调用C工程中的函数

/etc/fstab 2011-03-30 12:23:08
又是令人抓狂的LNK2019错误

IDE:Visual Studio 2010

场景重现:
一个Solution内有两个工程,ProjectA(完全用C语言实现)和ProjectB(使用C++编写).
ProjectA作为底层的程序实现基本的功能,为了效率和其他问题,使用了C语言编写,代码已有数万行,不能做大的改动;另外,该工程Build没有任何Error.
ProjectB是ProjectA所实现的程序功能的图形界面(在这里使用MFC来做),自然不得不用到面向对象...

在ProjectB中,我写了一个类,将ProjectA中的基本功能进行封装,以便在ProjectB中对ProjectA中的部分功能进行调用,我称这个类为Controller.

于是,Controller类中的方法,就要调用ProjectA中的函数,我知道这种情况下该用extern "C" {...}这样的方法来包含ProjectA中的头文件,例如:

extern "C"{
#include "dataload/dataload.h"
//其对应代码使用C语言编写
}



但是这种方法始终出现Link Error...
在ProjectB中,编写的cpp源文件要包含Controller.h的头文件,例如LoadData.cpp中,需要这样写:

#include "Externel/Controller.h"
//路径是没问题


但是,在ProjectB进行Build的时候,就出现了在LoadData.obj有unresolved externel symbol的错误,不能连接,错误LNK2019;每一个Controller中调用ProjectA中函数的地方都出现了错误.


网上看了N多LNK2019错误的帖子,千篇一律,该试的都试过了...抓狂...求助...


希望各位达人根据我的描述在VS2010里面重建一下这样的环境,告诉我该怎么办。。。
新建一个Solution,其中包含两个Project,一个用C语言编写(后缀名为.c和.h),另一个工程用c++编写,做个简单的测试类,封装C语言工程提供函数.然后在C++工程中新建另一个类,调用封装的类,看是否能够连接成功.


我初步认为这可能是某些环境变量没设对的问题,但是不知道该怎么解决...

求解决方案.
...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
/etc/fstab 2011-03-30
  • 打赏
  • 举报
回复
谢谢"Loaden",问题解决了~

学了半天才明白,原来虽然在一个Solution,但是不是一个Project中的内容是需要分别编译为.lib/.dll然后在工程中引用的.

谢~
老邓 2011-03-30
  • 打赏
  • 举报
回复
链接了工程A的lib了吗?
例如:
#pragma comment(lib, "ProjectA.lib");

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧