C ++ Visual Studio编译器将本地代码编译为托管

时间:2018-12-12 16:37:11

标签: c++ visual-studio uwp native managed

我已经在VS下启动了一个新的解决方案,该解决方案同时具有托管的UWP代码项目和本机项目。编译器将编译本机代码并提供一个.lib文件。编译托管代码时,编译器会再次编译本机代码-作为托管代码并吐出错误。

我有另一个可以使用的解决方案,并且我试图复制设置。经过一天的属性设置比较后,我无法弄清它为什么这样做。

在哪里寻找想法?

_____以下是新的______

我已经开始了一个新的项目解决方案,并复制了所有内容。这就是我所学到的。

首先,编译顺序有所不同-缺少stdafx.h文件,错误从无穷大变为仅25个。它们现在与一个文件MotionBase有关。本机项目可以正常编译,然后托管项目可以编译,然后在MotionBase上转换。此代码示例给出错误“'MotionBase':不是'BallLib'的成员”和“'input':未知的覆盖说明符”。

#pragma once
#include "stdafx.h"
#include "FiniteDiffHelpers.h"
#include "MotionBase.h"
#include "MultiVarSolver.h"

namespace BallLib {
    class PathFinderHelper : public FiniteDiffHelper
    {
    public:
        PathFinderHelper();
        Line locs;
        BallLib::MotionBase output;
        MotionBase input;

.....

PathFinderHelper在本机项目中编译良好。 MotionBase中没有错误。 MotionBase是BallLib的一部分。 Intelisense在PathFinderHelper中没有错误。

2 个答案:

答案 0 :(得分:2)

确保将stdafx.h文件正确插入代码中。构建顺序不同,因此您可能会陷入困境。

在受管pch.h文件中包含(#include)本机stdafx.h。

答案 1 :(得分:0)

并非所有相关设置都在项目属性对话框中。还要检查属性非模式窗口,尤其是在解决方案资源管理器中选择了项目间引用的情况下。

您将在其中找到一个名为“使用库依赖项输入”的设置,该设置使主项目包括库项目中的各个源文件,而不是静态库。确保将其设置为False。

enter image description here