Visual studio 2010 在VS2010中,哪些函数导出到DLL中?

Visual studio 2010 在VS2010中,哪些函数导出到DLL中?,visual-studio-2010,dll,dllexport,Visual Studio 2010,Dll,Dllexport,我正在构建一个DLL来包装一个C/C++库,以便从matlab调用 我使用标准的\uu declspec(dllexport)导出函数。具体来说,我有几个.h文件,其中的代码基本上如下所示: #ifdef __cplusplus extern "C" { #endif #ifdef _MSC_VER __declspec(dllexport) #endif void FOO(); #ifdef __cplusplus } #endif 然后,我有一个lib.h文件,它只包含所有这些.h

我正在构建一个DLL来包装一个C/C++库,以便从matlab调用

我使用标准的
\uu declspec(dllexport)
导出函数。具体来说,我有几个.h文件,其中的代码基本上如下所示:

#ifdef __cplusplus 
extern "C" {
#endif

#ifdef _MSC_VER
__declspec(dllexport)
#endif
void FOO();

#ifdef __cplusplus 
}
#endif
然后,我有一个
lib.h
文件,它只包含所有这些
.h
文件

#include "foo.h"
#include "bar.h"
我的项目配置是这样的,它确实构建了一个DLL,但神秘之处在于
BAR()
在DLL中(由
dumpbin
验证),而
FOO
不在DLL中


有没有关于这种情况的想法?

在上面的示例中,问题是由于BAR在项目的源代码树中没有定义

我对TFS和VS比较陌生,所以让我看看是否可以用一种有意义的方式来解释这一点

该解决方案有多个项目。一个项目称为
MatlabDLL
,主项目称为
OurLibrary
。MatlabDLL并没有导入所有的库,只是将它的一部分打包以包含到Matlab中。在许多情况下,Matlab DLL可以轻松地直接调用C函数,在其他情况下,必须重写函数才能处理Matlab C/DLL调用语义

因此,
BAR
必须有一个特定于Matlab的C包装器才能从Matlab调用它。关联的源文件bar.cpp位于MatlabDLL项目中。(在后台,
BAR
调用许多函数,这些函数的源代码位于
OurLibrary
项目中,而它们的源文件都不在MatlabDLL项目中。)

FOO
有一个不需要特定于C的包装器的实现,因此FOO.cpp位于源代码树的
OurLibrary
部分,在
MatlabDLL
项目中没有源文件,尽管它与
.h
文件关联,但是
MatlabDLL.h
引用了它

最后,VS2010似乎只构建了在项目中关联了
c
文件的
\uuu declspec(dllexport)
'd函数。将
foo.c
添加到项目中解决了问题。

对于这样的问题,准确性非常重要。所以发布不可能编译的代码对我们没有帮助。