質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1916閲覧

.dllした関数のInit();関数が見つからない原因が知りたい。 リンクエラー

退会済みユーザー

退会済みユーザー

総合スコア0

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/07 06:46

提示コードですがヘッダーとソースで宣言と定義をかいて三つ目の提示コードのmain関数で参照しているのですがなぜか未定義の参照というリンクエラーが発生してしまいます。これはなぜでしょうか?

エラー「 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2019 未解決の外部シンボル "bool __cdecl FrameWork::Init(void)" (?Init@FrameWork@@YA_NXZ) が関数 main で参照されました Game C:\Users\yw325\Desktop\Game\Game\Game\Main.obj 1

.dll はビルド事にD&Dしてます。

cpp

1#ifndef ___FRAMEWORK_HPP_ 2#define ___FRAMEWORK_HPP_ 3 4#include <iostream> 5#include <fstream> 6#include <cstdlib> 7#include <vector> 8#include <glew/include/GL/glew.h> 9#include <glfw/include/GLFW/glfw3.h> 10 11 12#include "Window.hpp" 13#include "Sprite.hpp" 14#include "Rectangle.hpp" 15#include "Camera.hpp" 16#include "Texture.hpp" 17#include "Line.hpp" 18#include "Circle.hpp" 19#include "Text.hpp" 20 21namespace FrameWork 22{ 23 bool Init(); 24} 25#endif 26

cpp

1#include "FrameWork.hpp" 2 3namespace FrameWork 4{ 5 bool Init() 6 { 7 if (glfwInit() == GL_FALSE) 8 { 9 std::cerr << "glfw初期化失敗。" << std::endl; 10 return false; 11 } 12 13 atexit(glfwTerminate); //プログラム終了時の処理を登録 14 15 16 //OpenGL Verison 3.2 Core Profile を選択する 17 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); 18 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); 19 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 20 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 21 22 return true; 23 } 24}

cpp

1#include <iostream> 2#include "FrameWork.hpp" 3//#include "Window.hpp" 4 5int main() 6{ 7 FrameWork::Init(); 8 std::shared_ptr<FrameWork::Window> window; 9 10 return 0; 11} 12 13

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/05/07 06:55

なぜそう、自分で理解できず、コントロールできないことばかりして質問を乱発するのでしょう。 正直、C++で書いたコードのC言語インターフェースでのDLL(エクスポート)化はあなたには無理です。 > .dll はビルド事にD&Dしてます。 D&Dとはなんですか。ドラッグアンドドロップのつもりですか。そんな雑な対応で動くはずがないです。
退会済みユーザー

退会済みユーザー

2021/05/07 07:10

リンクエラーだけで過去何回質問してるんだという感じが。
K_3578

2021/05/07 07:13

なんか指摘されるとすぐ削除リクエストして素知らぬ顔で同じ質問繰り返す。
guest

回答2

0

ベストアンサー

提示コードですがヘッダーとソースで宣言と定義をかいて三つ目の提示コードのmain関数で参照しているのですがなぜか未定義の参照というリンクエラーが発生してしまいます。これはなぜでしょうか?

リンクできていないからです。

投稿2021/05/07 06:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/07 06:59

.dllなのでリンクは不要なのではないのでしょうか?
退会済みユーザー

退会済みユーザー

2021/05/07 07:36

.dllを使う場合両方必要ということでいいのでしょうか?
退会済みユーザー

退会済みユーザー

2021/05/07 08:07

解決済みなんですよね。 上記URLの「動的リンクなのに.libファイルが必要なのはなぜか」みたいな話は、読みましたか?
guest

0

.dll はビルド事にD&Dしてます。

わからんなぁ... dllは実行時に参照されるもので、コンパイル/リンク時には不要なんだが。

投稿2021/05/07 06:50

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/07 06:52

それしってるのですが。.dllを生成ということです。
dodox86

2021/05/07 07:01

epistemeさんが指摘されていることが伝わっていません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問