VisualStadio2010でのスタティックライブラリの作り方がわかりません
いくらか検索して
作成時にスタティックライブラリにチェックをいれ、プリコンパイル済みからチェックは外し、一通りの作業はやりました
サイトは下記のサイトを参考にしています
http://d.hatena.ne.jp/mitsu_chie/touch/ ... 1236324630
このあと別プロジェクトより、プロパティより追加インクルードを行い、ライブラリと同じディレクトリにあるヘッダーファイルを読み込んで使用したところ、ライブラリの重複などのエラーが発生しました。
ライブラリとヘッダーファイルは上記の通り同じディレクトリにあり、Libというディレクトリに統括しています。
それらをVisualStadioのプロパティから追加インクルードディレクトリに指定しています
目標としては、公開できるようにできたらと思っているのですが、ここでつまってしまっています。
もしよろしければ、正しいやり方を教えてください
よろしくお願いいたします
ただいまコードが手元にないため、戻り次第、のせさせていただきます
スタティックライブラリーの作成について
Re: スタティックライブラリーの作成について
Visual Studioにおけるlibファイルの作成~参照については、
過去に私が同じ質問をあげていますのでよかったらどうぞ(^^)
http://dixq.net/forum/viewtopic.php?f=3&t=15689
一度、私のように(上記トピックのように)、ごくごく簡単なlibを作って実験してみられてはいかがでしょう。
簡単なlibでも同じ結果になるorならないを明確にされれば、
Boneさんの問題が以下のどこにあるかわかりやすいと思います。
・lib側のソース
・lib作成の手順
・参照する側のソース
・参照の手順
過去に私が同じ質問をあげていますのでよかったらどうぞ(^^)
http://dixq.net/forum/viewtopic.php?f=3&t=15689
なんとなく参照側に問題がありそうだなぁと想像はできますが、ライブラリの重複などのエラーが発生しました。
一度、私のように(上記トピックのように)、ごくごく簡単なlibを作って実験してみられてはいかがでしょう。
簡単なlibでも同じ結果になるorならないを明確にされれば、
Boneさんの問題が以下のどこにあるかわかりやすいと思います。
・lib側のソース
・lib作成の手順
・参照する側のソース
・参照の手順
Re: スタティックライブラリーの作成について
返信送れて申し訳有りません
ただいま、すこし多忙で、質問に必要なプログラムをかけていません
明日、夜には、暇が出来ますので、もう少し返信を待っていただくと幸いです。
空き時間に、Ketty様が立てたトピックのほうを見せていただきましたので、それを参考に明日立ててみます。
エラー、または概念の理解が出来なかった場合は、また質問させていただきますので、よろしくお願いいたします。
ただいま、すこし多忙で、質問に必要なプログラムをかけていません
明日、夜には、暇が出来ますので、もう少し返信を待っていただくと幸いです。
空き時間に、Ketty様が立てたトピックのほうを見せていただきましたので、それを参考に明日立ててみます。
エラー、または概念の理解が出来なかった場合は、また質問させていただきますので、よろしくお願いいたします。
Re: スタティックライブラリーの作成について
先ほど実験し、コンパイルと引き出すことが出来るようにはなりました。
ありがとうございました
これらからライブラリを生成し、TestLibを読み込んだのですが
こんな感じに書きました
しかし、実際に進めているライブラリでは、
error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) は既に msvcprtd.lib(MSVCP100D.dll) で定義されています。
のエラーがはいてしまっています
ライブラリには、標準ライブラリを入れてしまってはいけないのでしょうか??
ありがとうございました
//TestLib.h
#pragma once
#include "Test.h"
#ifdef _DEBUG
#pragma comment(lib,"TestLib_d.lib")
#else
#pragma comment(lib,"TestLib_r.lib")
#endif
//Test.cpp
#include "Test.h"
#include <iostream>
Test::Test(){
std::cout<<"TEST";
}
void Test::test(){
std::cout<<"test";
}
//Test02.cpp
#Include "TestLib.h"
#include <iostream>
int main(){
Test t();
t.test();
std::cin.ignore();
return 0;
}
しかし、実際に進めているライブラリでは、
error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) は既に msvcprtd.lib(MSVCP100D.dll) で定義されています。
のエラーがはいてしまっています
ライブラリには、標準ライブラリを入れてしまってはいけないのでしょうか??
Re: スタティックライブラリーの作成について
そんなことはありませんよ(^^)Bone さんが書きました: ライブラリには、標準ライブラリを入れてしまってはいけないのでしょうか??
私はstlをインクルードしたLibを作って動かしてますし、
一応、私の手元でもBoneさんの貼られたソースでLibおよび参照側プロジェクトを作ってみたところ、ちゃんと動きました。
ただし、いくつか不都合があったので手直ししました。
まず、Lib側のcpp(Test.cpp)がビルドできなかったので以下を追加しました。 これがないとLibを作る際にエラーになるはずなのですが・・・
Visual Studio上で"追加⇒クラス"で追加していれば自動的に挿入されているはずなんですが。
それから、参照側(Test02.cpp)も以下の2ヶ所が原因でビルドできませんでした。 たぶん、ここに書き込むにあたって、ちょこちょこいじって・・・間違えられたんですよね(??)
いろんな方から正しい回答をもらうためにも、ご自身のソースは、なるべくありのまま正しく貼らるのがよいです。
↓私はこのように直しました。
Re: スタティックライブラリーの作成について
回答ありがとうございます
stdafx.hですが、作成したさいに、プリコンパイル済みを切らずに作った場合出てきました
そもそも、これがどういう働きかわからないです・・・
わかりづらくて申し訳ないのですが、前回時点でTestLibのほうはコンパイルに成功し、使えました。
しかし、なぜかコンストラクタにかかれている処理は実行されませんでした。
開発中のライブラリで、競合のエラー等が発生してしまいました
使用していたライブラリは、string、iostream、cstdarg
です
コードはまた別途送ります
申し訳ないです
stdafx.hですが、作成したさいに、プリコンパイル済みを切らずに作った場合出てきました
そもそも、これがどういう働きかわからないです・・・
わかりづらくて申し訳ないのですが、前回時点でTestLibのほうはコンパイルに成功し、使えました。
しかし、なぜかコンストラクタにかかれている処理は実行されませんでした。
開発中のライブラリで、競合のエラー等が発生してしまいました
使用していたライブラリは、string、iostream、cstdarg
です
コードはまた別途送ります
申し訳ないです
Re: スタティックライブラリーの作成について
なるほど、プリコンパイル済みヘッダーにしなかったのですね。
私は特に何も考えずにその設定をONで作ってました。
stdafxについては、以下が分かりやすかったです(^^)
http://www.geocities.co.jp/Hollywood/2358/mfc_7.html
それから、私のプロジェクト設定で、
もしかしたら…と思われる設定があったのでお伝えしておきます。
Boneさんのやつを動かしたときに、私は以下の(キャプチャの)設定を
Lib側にも参照側にもやってました。
私は特に何も考えずにその設定をONで作ってました。
stdafxについては、以下が分かりやすかったです(^^)
http://www.geocities.co.jp/Hollywood/2358/mfc_7.html
それから、私のプロジェクト設定で、
もしかしたら…と思われる設定があったのでお伝えしておきます。
Boneさんのやつを動かしたときに、私は以下の(キャプチャの)設定を
Lib側にも参照側にもやってました。
Re: スタティックライブラリーの作成について
Kettyさんありがとうございます!
なんとか、コンパイル等できるようになりました!
どうやらKettyさんの言っていた、ランタイムライブラリの設定がだめだったようです・・・!
本当にありがとうございました!!
なんとか、コンパイル等できるようになりました!
どうやらKettyさんの言っていた、ランタイムライブラリの設定がだめだったようです・・・!
本当にありがとうございました!!