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.h
Date.cpp
私がすでにやろうとしたこと:
librarywrap プロジェクトの新しいリファレンスが追加されました。
Project -> Properties -> Common -> Add New Reference
. 「applicationProject」を選択。追加のインクルード ディレクトリを追加しました:
$(SolutionDir)\applicationProject
2 つの質問:
まず、私がやろうとしていることは合法/達成可能ですか? DLL はアプリケーション プロジェクトにリンクしますが、通常はアプリケーションが DLL にリンクする必要があります。仮に、2 つのアプリケーション プロジェクト (.exe) と (.exe) がある場合、相互にリンクすることはできますか?
第二に、最初の質問に対する答えが肯定的である場合、それを機能させるために何を追加/変更する必要がありますか?
どうもありがとう!
ニコラス