- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 C++,但在尝试创建库时遇到瓶颈。使用 Visual Studio 2013,我收到此错误:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall Polynomial::Polynomial(void)" (??0Polynomial@@QAE@XZ) referenced in function _main A:\Medier\Desktop\PolyLib\Test\Test.obj Test
测试项目目前缩减为:
#include "A:\Medier\Desktop\PolyLib\PolyLib\PolyLib.h"
using namespace std;
void main()
{
Polynomial poly;
}
库头文件 PolyLib.h
如下所示:
using namespace std;
class Polynomial {
private:
double* Coefficients; //Array of coefficients - Pointer type.
int Degree; //The highest exponent of the polynomial
public:
Polynomial(); //Default constructor - Creates the trivial polynomial 0.
Polynomial(int degree, double coefficients[]); //Constructor for specific polynomials
库中终于有了一个CPP文件,PolyLib.cpp
,提供了头文件的实现。看起来像这样:
#include "PolyLib.h"
using namespace std;
Polynomial::Polynomial() {
Degree = 0;
Coefficients = new double[Degree + 1];
Coefficients[0] = 0;
}
Polynomial::Polynomial(int degree, double coefficients[]) : Degree(degree), Coefficients(coefficients) {
int i = 0;
我知道我的测试项目查看 PolyLib.h
文件以查看可用的内容。我理解错误说它找不到多项式的空构造函数的实际实现。因此,我得出结论,PolyLib.cpp
文件未被使用。
谁能告诉我从这里去哪里?
最佳答案
可以将所有 .cpps 构建到一个项目中,这对于初学者来说是最常见的。但是,根据问题标签和措辞,我假设您想创建并链接一个静态库,这也可以相当简单地完成。
我刚刚构建了一个在一个 VS2013 项目中正确设置静态 lib + exe 链接的示例:Dropbox link ,为了解释这个问题。
基础知识是您需要两个项目:一个 lib 项目(输出一个静态 .lib 文件)和一个 exe 项目(输出一个 .exe 文件)。 .exe 项目包含一个 main()
函数,并且能够包含 header 和指向 .lib 的链接。
MyExe 的有趣之处在于我将 $(SolutionDir)\LibExample\Inc
添加到包含路径以包含我的 header (header.h),并且我添加了 $(SolutionDir)\$(Configuration)
到库的 lib 路径。您可以通过右键单击项目找到它们,转到属性,它们都在“VC++ 目录”下。
关于确定找到您的库所需的路径的一个很好的技巧是简单地构建库。它实际上在“Output->Build”文本中告诉你刚刚构建的文件所在的位置。这是您需要的路径。 $(SolutionDir)\$(Configuration)
是此路径的“宏”简写。我建议使用宏,这样您就可以轻松地将项目目录移动到另一个路径或计算机。
我还在链接器\输入设置中添加了 LibExample.lib;
到“附加依赖项”。这是能够链接库的关键步骤。不这样做将导致无法解析的外部符号,就像您看到的那样。
我还在 MyExe 和 LibExample 之间设置了依赖关系(右键单击项目,Build Dependencies->Project Dependencies)。这很重要,因此您可以重建整个解决方案而不必担心链接到旧版本的库。有了适当的依赖关系,它总是会首先构建库,然后是 exe。
关于c++ - 尝试用 C++ 创建库。测试项目找不到已声明构造函数的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30632197/
谁能解释一下原因: (define a (lambda() (cons a #f))) (car (a)) ==> procedure ((car (a))) ==> (procedure . #f)
这是 PyBrain 网站的摘录。我了解大部分正在发生的事情,但是一行让我完全难住了。我以前从未在 python 代码中看到过这样的东西。这是整个循环,对于上下文: for c in [0,
我是gradle / groovy的新手。我想创建将做一些事情的自定义任务。我的第一个问题是任务完成时该如何做?我可以覆盖doFirst / doLast闭包吗?也许我可以重写某些在开始和结束时都会执
我刚刚开始评估 MS 企业库。他们使用以下指令来获取实例: var customerDb = EnterpriseLibraryContainer.Current.GetInstance("C
这是我的 if else Ansible 逻辑.. - name: Check certs exist stat: path=/etc/letsencrypt/live/{{ rootDomain
我正在使用construct 2.8 对一些失传已久的 Pascal 程序创建的一些文件的 header 进行逆向工程。 header 由许多不同的记录组成,其中一些是可选的,我不确定顺序是否固定。
我在将 getchar() 的输入放入 char *arr[] 数组时遇到问题。我这样做的原因是因为输入数据(将是一个带有命令行参数的文件)将存储在一个 char 指针数组中以传递给 execvp 函
通常我们不能约束类型参数 T派生自密封类型(例如 struct 类型)。这将毫无意义,因为只有一种类型适合,因此不需要泛型。所以约束如下: where T : string 或: where T :
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
#include using namespace std; class A { private: int m_i; friend int main(int argc, char cons
这个问题在这里已经有了答案: Are there legitimate uses for JavaScript's "with" statement? (33 个答案) 关闭 9 年前。 我有这个代
在this answer我看到了下一个 Bash 结构。 yes "$(< file.txt)" 什么意思 "$(< file.txt)" ? 我明白了 命令替换 - $(command)用命令的结
if (a == 1) //do something else if (a == 2) //do something else if (a == 3) //do somethi
关于构造的快速简单的问题。 我有以下用于将项目添加到 ListView 的代码。 ListViewItem item = new ListViewItem(); item.Text = file; i
我想使用 std::vector 来控制给定的内存。首先,我很确定这不是好的做法,但好奇心占了上风,无论如何我都想知道如何做到这一点。 我遇到的问题是这样的方法: vector getRow(unsi
下面显示了一段简单的javascript: var mystring = ("random","ignored","text","h") + ("ello world") 这个字符串会生成 hello
在 Java 中,创建对象的标准方法是使用 MyClass name = new MyClass(); 我也经常看到构造 new MyClass() { /*stuff goes in here*/
我正在编写 C++ ndarray 类。我需要动态大小和编译时大小已知的数组(分别分配自由存储和分配堆栈)。我想支持从嵌套的 std::initializer_list 进行初始化。 动态大小的没问题
我正在将一个项目从 Visual Studio 2005 转换为 Visual Studio 2008,并提出了上述结构。 using Castle.Core.Resource; using Cast
我想知道我在这里的想法是否正确,我主要针对接口(interface)进行编程,所以我想知道下面的类是否应该通过 DI 注入(inject),或者我应该自己实例化一个类... 注意:这些服务保存在我的核
我是一名优秀的程序员,十分优秀!