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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

Q&A

1回答

2882閲覧

TwinCAT3というソフト上で、C/C++のプログラムをした時のエラーを無くしたいです

al7072

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

0グッド

1クリップ

投稿2019/08/01 10:37

TwinCAT3というソフト上で、C/C++のプログラムを作っており、共有メモリを使おうとしています。

【環境】Win10、TwinCAT3、VisualStudio2015、WDK7.1、SDK10.0.18362

ですが、TwinCAT3上で共有メモリの関数(CreateFileMappingなど)を呼び出そうとすると、
エラー『LNK2019 未解決の外部シンボル〇〇〇が関数□□□で参照されました。』が出てしまい、ビルドできません。

ファイルの読み込みができていないと思い、
VisualStudio2015にて、プロジェクトのプロパティ→[構成プロパティ]→[リンカー]→[全般]→[追加のライブラリ]
で、共有メモリの関数をまとめているライブラリの『kernel32.lib』のパスを設定し、

プロジェクトのプロパティ→[構成プロパティ]→[リンカー]→[入力]→[追加の依存ファイル]
で、『kernel32.lib』を追加しました。

それでビルドしても現象は変わらず、エラー『LNK2019 未解決の外部シンボル・・・』が出てしまい、困っています。

何とかエラーを無くして、ビルドできるようにしたいと思っています。
そこで、何かアドバイスを頂けたらと思い、ここに相談させていただきました。

※普通にVisualStudio2015で作るとエラーはでませんが、TwinCAT3上で作るとエラーがでます。

C++

1//============================ 2//インクルード 3//============================ 4#include "TcPch.h" 5#include "windows.h" 6#include "stdio.h" 7#include "Module1.h" 8 9//============================ 10//構造体宣言 11//============================ 12typedef struct _SECURITY_ATTRIBUTES { 13 DWORD nLength; 14 PVOID tmp; 15 BOOL flg; 16}SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES; 17 18//============================ 19//プロトタイプ宣言 20//============================ 21HANDLE CreateFileMapping(HANDLE, PSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, PCTSTR); 22 23 24//============================ 25//クラスの一部(コンストラクタ部分) 26//============================ 27CModule1::CModule1() 28 : m_Trace(m_TraceLevelMax, m_spSrv) 29 , m_counter(0) 30{ 31 m_TraceLevelMax = tlAlways; //定型文 32 memset(&m_Parameter, 0, sizeof(m_Parameter)); //定型文 33 memset(&m_Inputs, 0, sizeof(m_Inputs)); //定型文 34 memset(&m_Outputs, 0, sizeof(m_Outputs)); //定型文 35 36 37 HANDLE tmp; 38 tmp = CreateFileMapping(//マッピングオブジェクトの作成 39 (HANDLE)-1, // 40 NULL, // 41 PAGE_READWRITE, // 42 0, //メモリサイズ上位DWORD 43 3000, //メモリサイズ下位DWORD 44 "test"); // 45 46}

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

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

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

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

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

cateye

2019/08/01 11:04

TwinCAT 3 Tutorial: Quick Start→http://www.contactandcoil.com/twincat-3-tutorial/quick-start/ は読みましたか? PLC(シーケンサ)絡みの開発環境のようですが?
al7072

2019/08/02 04:22

情報ありがとうございます。 拝見したことのないサイトでしたが、丁寧に記載されていて参考になりました。 おしゃるように、TwinCAT3というソフトはPLC絡みの開発環境です。 使用したいのは、その中のC/C++の機能となります。
al7072

2019/08/06 11:16

返答遅くなり申し訳ございません。 情報ありがとうございました。 色々試しましたが、エラーに変化はありませんでした。 なので、CreateFileMappingを使用しない方向で考えたいと思います。 お手数おかけしましたm(_ _)m
guest

回答1

0

『LNK2019 未解決の外部シンボル〇〇〇が関数□□□で参照されました。』

この伏字はなんでしょうか? 特に「外部シンボル〇〇〇」 〇〇〇が何に含まれるかだと思います。 まあ、 TwinCAT絡みだと思いますが、それを調べる事からだと思います。
これを無視してやみくもに調べてもダメではないでしょうか。

投稿2019/08/01 13:41

pepperleaf

総合スコア6383

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

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

al7072

2019/08/02 04:23

ご指摘ありがとうございます。 エラー内容が長かったため、質問時にははしょりました。 エラー文としては、下記のようなエラーが表示されます。 LNK2019 未解決の外部シンボル "void * __cdecl CreateFileMapping(void *,unsigned long,unsigned long,unsigned long,unsigned long,char const *)"      (?CreateFileMapping@@YAPEAXPEAXKKKKPEBD@Z) が関数 "public: __cdecl CModule1::CModule1(void)" (??0CModule1@@QEAA@XZ) で参照されました。 CModule1のコンストラクタ部分でCreateFileMappingを実行しているので、それに関するエラーです。 内容としては、CreateFileMappingが、未定義の外部シンボル扱いになってしまっているのだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問