0

我遇到了错误 LNK2019 和 LNK1120 的问题。

我有两个项目的解决方案。在第一个程序中我有我的程序,在第二个项目中我有测试文件。

在第二个项目中,我可以包含头文件(带类)。我可以使用内联方法。但是...我在头文件中定义了静态私有方法,并在 .cpp 文件中实现。如果我想测试使用此静态私有方法的公共内联方法,我会遇到 LNK2019 错误和致命错误 LNK1120。

我不知道该怎么办...这对我来说看起来不错,因为我可以在第一个项目中使用它而不会出现任何错误...

看看例子......解决方案:

项目1:

// 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!
}

但...

项目 2(在解决方案中):

// 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]

谢谢。

4

2 回答 2

1

希望 proj1 是一个静态库,proj2 是 exe 或 dll。在这种情况下,您必须将 proj1 的引用添加到 proj2,它会正常工作。(最顶部的通用属性/框架和参考;添加新参考)。

如果两个项目都是 exe,那么您必须将一个库与示例的实现分开,留下其余的,然后在两个项目中引用该库。

您也可以将其设为 DLL 而不是静态库,但是您必须使用正确的导出内容,并确保在单个目录中生成文件以供执行。

于 2013-06-08T20:34:33.853 回答
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!
}
于 2013-06-08T20:19:20.767 回答