0

2 つの win32 プロジェクトで構成される Visual Studio ソリューションが 1 つあります。1) アプリケーション (.exe) 2) 関数ラッパー (.dll)。

ソリューションはプロトタイピング段階にあるため、すべてのクラス/機能が (.exe) プロジェクトの下に実装されています。汚れていますが、デバッグ/テストが迅速かつ簡単です。

MSExcel/VBA の機能を「再生」する DLL ラッパーの作成を開始しましたが、リンク エラーに直面しました。

error LNK2019: unresolved external symbol "public: __thiscall Date::Date(int,int,int)" (??0Date@@QAE@HHH@Z) referenced in function addNumbers

DLL ヘッダー ファイル:

#ifdef LIBRARYWRAP_EXPORTS
#define LIBRARYWRAP_API __declspec(dllexport)
#else
#define LIBRARYWRAP_API __declspec(dllimport)
#endif

LIBRARYWRAP_API int _stdcall addNumbers(int a, int b);

DLL ソース ファイル:

#include "..\applicationProject\Date.h"

class Date;
LIBRARYWRAP_API int _stdcall addNumbers(int a, int b){
   Date dummyDate(12,1,2014); // <- Linker error LNK2019.
   return (a+b);
}

クラスDateとコンストラクターは、 内のDate::Date(int,int,int)アプリケーション プロジェクト (.exe) で定義されます。Date.hDate.cpp

私がすでにやろうとしたこと:

  1. librarywrap プロジェクトの新しいリファレンスが追加されました。Project -> Properties -> Common -> Add New Reference. 「applicationProject」を選択。

  2. 追加のインクルード ディレクトリを追加しました:$(SolutionDir)\applicationProject

2 つの質問:

まず、私がやろうとしていることは合法/達成可能ですか? DLL はアプリケーション プロジェクトにリンクしますが、通常はアプリケーションが DLL にリンクする必要があります。仮に、2 つのアプリケーション プロジェクト (.exe) と (.exe) がある場合、相互にリンクすることはできますか?

第二に、最初の質問に対する答えが肯定的である場合、それを機能させるために何を追加/変更する必要がありますか?

どうもありがとう!

ニコラス

4

1 に答える 1