【发布时间】:2011-12-19 19:29:14
【问题描述】:
我有问题。我收到一个错误,但我不确定它为什么会发生。
2>Home.obj : error LNK2019: unresolved external symbol "**void __cdecl LogAString(char *,...)**" (?LogAString@@YAXPADZZ) referenced in function "**public: static void __cdecl X::Home::HomeStart(void)**" (?HomeStart@Home@X@@SAXXZ)
2>Widget.obj : error LNK2001: unresolved external symbol "void __cdecl LogAString(char *,...)" (?LogAString@@YAXPADZZ)
2>J:\src\out.dll : fatal error LNK1120: 1 unresolved externals
这是我的代码:
日志.h
#pragma once
#include <iostream>
#include <cstdarg>
void LogAString(char* fmt, ...);
void LogAnError(char* fmt, ...);
日志.cpp
#include "Log.h"
#include <Util/String/String Formatting.h> // defines format(). Does not have any errors or issues.
void LogAString(char* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
};
void LogAnError(char* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
auto formatted_string = format("ERROR: %s", fmt).c_str();
LogAString(const_cast<char*>(formatted_string), ap);
va_end(ap);
};
Home.cpp(提取)
#include "Home.h"
#include "Log.h"
namespace X {
void Home::HomeStart()
{
while (true)
{
auto number_of_widgets = Widgets::Count();
LogAString("Loading with %d widgets", number_of_widgets);
}
}
} // namespace X
我以为我已经分别在头文件和 cpp 文件中声明和定义了函数。为什么我会收到这些错误?我已经做了几个小时了,但仍然不确定为什么会这样。在 VS 2010 上使用 VC++。
此时我没有使用任何其他外部库。编译目标是一个DLL,“out.dll”。
【问题讨论】:
-
此日志内容是否在单独的项目中?
-
@FaileDev,它在同一个项目中。
-
事实上,我确实编译了您的代码并执行了它,它运行良好。所以你要么有两个项目,要么正在发生一些神奇的事情......
-
我认为这可能是 Visual Studio 的魔法。我之前遇到过这样的问题,通过创建一个相同的项目并编译来解决。我回家后试试看。
标签: c++ visual-studio-2010 visual-c++