簡體   English   中英

C ++ Visual Studio編譯器將本地代碼編譯為托管

[英]C++ Visual Studio Compiler compiles native code as 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中沒有錯誤。

確保將stdafx.h文件正確插入代碼中。 構建順序不同,因此您可能會陷入困境。

在托管的pch.h文件中包含(#include)本機stdafx.h。

並非所有相關設置都在項目屬性對話框中。 還要檢查屬性非模態窗口,尤其是在解決方案資源管理器中選擇了項目間引用的情況下。

在這里,您會發現一個名為“使用庫依賴項輸入”的設置,該設置使主項目包括庫項目中的各個源文件,而不是靜態庫。 確保將其設置為False。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM