静的ライブラリのエクスポート – プログラミング – Home

静的ライブラリのエクスポート
 
通知
すべてクリア

[解決済] 静的ライブラリのエクスポート


はや
 はや
(@はや)
ゲスト
結合: 19年前
投稿: 5
Topic starter  

いつもお世話になります。
環境WinXP VC++6.0

静的ライブラリ(C++)で以下のようなクラスを定義しました。
Test2()の実装はTestClass.cppで行っています。

class TestClass
{
public:
int Test1(){return 4;}
int Test2();
};

EXE側(C++)で以下のようにしたところコンパイルエラーになりました。

int n;
TestClass e;
n = e.Test1();
n = e.Test2();

エラーメッセージ:
LNK2001: 外部シンボル "public: int __thiscall TestClass::Test2(void) (?
Test2@TestClass@@QAEHXZ) は未解決です
Debug/----.exe : fatal error LNK1120: 外部参照 1 が未解決です。

Test1は問題なしでTest2だけが問題のようです。
どうすれば解決できますでしょうか。
よろしくお願いいたします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

void TestClass::Test2() を実装する。


返信引用
はや
 はや
(@はや)
ゲスト
結合: 19年前
投稿: 5
Topic starter  

ありがとうございます。

Test2はTestClass.cppファイルで以下のように実装しています。

int TestClass::Test2()
{
return 5;
}

ヘッダファイルで実装したものはEXEで使えるのですが、
cppで実装したものは使えないという状況です。


返信引用
fackt
 fackt
(@fackt)
ゲスト
結合: 21年前
投稿: 8
 

EXE側に依存関係をつける。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

D:\work>cl -c TestClass.cpp
D:\work>lib /OUT:TestClass.lib TestClass.obj
D:\work>cl -EHsc main.cpp TestClass.lib
D:\work>main
9

…どってことねぇですが。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

あ、

----- main.cpp -----
#include <iostream>
#include TestClass.h

int main() {
TestClass e;
int n = e.Test1();
n += e.Test2();
std::cout << n << std::endl;
return 0;
}

です。


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

単に、EXE側に静的ライブラリをリンクしていないのでは?

ヘッダファイルのincludeだけでは、リンクしたことになりません。


返信引用
はや
 はや
(@はや)
ゲスト
結合: 19年前
投稿: 5
Topic starter  

ありがとうございました。
できました。
プロジェクト→依存関係→TestClassをチェック


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

なんだかなー ^^;


返信引用
まき
 まき
(@まき)
ゲスト
結合: 21年前
投稿: 11
 

LNK2001:

ってコンパイルエラーじゃなくて、リンクのエラーですもんね。。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました