1

プロジェクトにユーティリティ関数をいくつか書いています。ネストされた名前空間からいくつかの関数を使用しようとすると、奇妙な LNK2019 エラーが発生しました。Google と stackoverflow で検索しようとしましたが、何か役に立ちませんでした。

マイファイル

ヘッダファイルX.h:

#pragma once

namespace A {
    namespace B {
        /**
         * A função recebe edValue e devolve em ponto flutuante
         * o inteiro mais próximo de edValue.
         * 
         * Método usado: http://en.wikipedia.org/wiki/Directed_rounding#Round_half_up
         *
         * @param edValue valor que será arredondado.
         * @return o inteiro mais próximo à edValue (em ponto flutuante).
         */
        double round(double edValue);
    }
}

CPP ファイルX.cpp

#include "StdAfx.h"
#include "X.h"
#include <cmath>

double A::B::round(double edValue)
{
    return floor(edValue + 0.5);
}

エラーメッセージ

7>D.obj : error LNK2019: unresolved external symbol "double __cdecl A::B::round(double)" (?round@A@B@@YANN@Z) referenced in function "public: void __thiscall

編集(私の問題の解決策)

私のファイルX.{h,cpp}はプロジェクト A にあり、私はプロジェクト B でそれらの関数を使用__declspec(dllexport)しています。関数のプロトタイプで使用すると、プロジェクト B でこれらの関数を使用できます。これは、DLL のような A を使用するためです。Visual Studio 2010 でさまざまな C++ プロジェクトの関数を使用する方法でこのヒントを得ました。(@Luchian Grigore から返信) およびVisual studio: 2 つのプロジェクト間の関数のリンクに関する質問(@dascandy から返信)。

4

2 に答える 2

0

関数のコードが別のプロジェクトにある場合は、静的または動的ライブラリにコンパイルしてから、[リンカー]>[入力]>[追加の依存関係](MS Visual Studioの場合)のプロジェクトオプションで、呼び出し元のプロジェクトにライブラリを追加する必要があります。

于 2012-10-04T11:31:29.860 に答える
0

次の 2 つのことを行う必要があります。

  • [リンカー] > [全般] > [追加の依存関係] で使用しているライブラリのパスを指定します + - - [リンカー] > [入力] > [追加の依存関係] で使用しているライブラリを指定します
于 2012-10-04T12:27:07.190 に答える