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}