我遇到错误LNK2019和LNK1120的问题。
我有两个项目的解决方案。在第一个程序中我有我的程序,在第二个项目中我有测试文件。
在第二个项目中,我可以包含头文件(带有类)。我可以使用内联方法。但是......我在头文件中定义了静态私有方法,并在.cpp文件中实现。 如果我想测试使用这种静态私有方法的公共内联方法,我有LNK2019错误和致命错误LNK1120。
我不知道该怎么办......这对我来说很好,因为我可以在第一个项目中使用它而没有任何错误......
看看例子...... 解决方案:
PROJECT1:
// example.h
class Example {
public:
void method() { static_method(); };
private:
static void static_method();
};
// example.cpp
void Example::static_method() { /* implementation */ }
// main.cpp
void main()
{
Example e;
e.method(); // it works!
}
但是...
PROJECT2(在解决方案中):
// test.cpp
void main()
{
Example e;
e.method(); // it doesn't work (but if I add implementation of
// Example::static_method() to header file example.h - it's OK)
}
你能帮助我吗? [VS2010]
感谢。
答案 0 :(得分:1)
希望proj1是一个静态库,proj2是exe或dll。在这种情况下,您必须将proj1的引用添加到proj2,它将正常工作。 (非常顶部的共同属性/框架和引用;添加新引用)。
如果两个项目都是exe,那么你必须拆分一个带有example实现的库,剩下的就是其余的,然后在两个项目中引用lib。
你也可以把它变成一个DLL而不是静态的lib,但是你必须使用正确的导出内容,并确保在单个目录中生成文件以供执行。
答案 1 :(得分:0)
尝试在.h文件中实现静态方法,如:
// example.h
class Example {
public:
void method1() { static_method(); };
private:
static void static_method() { // implementation }
};
// example.cpp
/* nothing here yet... */
// main.cpp
void main()
{
Example e;
e.method1(); // it works!
}