前提・実現したいこと
MQL4からDLLを用いて、LineNotifyのAPIを使い通知する機能を作っています。
Windows10を使用しており、Visual Stadio 2019で開発をしています。
https://youtu.be/q_mXVZ6VJs4
上記動画の通り、X86 Natice Tools Command Promt fo VS2019を使いビルドしました。
コンソールアプリケーションだと通知することができました。
libcurlの関数を使用せずにMQL4からDLLを使うこともできました。
発生している問題・エラーメッセージ
c++
1エラー LNK2001 外部シンボル "_curl_mime_name@8" は未解決です。 1 2エラー LNK2001 外部シンボル "_curl_slist_free_all@4" は未解決です。 1 3エラー LNK2001 外部シンボル "_curl_slist_append@8" は未解決です。 1 4エラー LNK2001 外部シンボル "_curl_mime_init@4" は未解決です。 1 5エラー LNK2001 外部シンボル "_curl_mime_free@4" は未解決です。 1 6エラー LNK2001 外部シンボル "_curl_mime_data@12" は未解決です。 1 7エラー LNK2001 外部シンボル "_curl_mime_addpart@4" は未解決です。 1 8エラー LNK2001 外部シンボル "_curl_global_init@4" は未解決です。 1 9エラー LNK2001 外部シンボル "_curl_global_cleanup@0" は未解決です。 1 10エラー LNK2001 外部シンボル "_curl_easy_perform@4" は未解決です。 1 11エラー LNK2001 外部シンボル "_curl_easy_init@0" は未解決です。 1 12エラー LNK2001 外部シンボル "_curl_easy_cleanup@4" は未解決です。 1 13警告 C26812 列挙型 'CURLcode' は対象範囲外です。'enum' (Enum.3) より 'enum class' を優先します 14
該当のソースコード
c++
1// dllmain.cpp : DLL アプリケーションのエントリ ポイントを定義します。 2#define CURL_STATICLIB 3#include "pch.h" 4#include "curl/curl.h" 5 6 7 8BOOL APIENTRY DllMain( HMODULE hModule, 9 DWORD ul_reason_for_call, 10 LPVOID lpReserved 11 ) 12{ 13 switch (ul_reason_for_call) 14 { 15 case DLL_PROCESS_ATTACH: 16 case DLL_THREAD_ATTACH: 17 case DLL_THREAD_DETACH: 18 case DLL_PROCESS_DETACH: 19 break; 20 } 21 return TRUE; 22} 23DLLFUNC_MQL4 int __stdcall notifyLineAPI() 24{ 25 curl_global_init(CURL_GLOBAL_ALL); 26 CURL* curl = curl_easy_init();; 27 CURLcode res; 28 29 curl_mime* mime1; 30 curl_mimepart* part1; 31 struct curl_slist* slist1; 32 mime1 = NULL; 33 slist1 = NULL; 34 35 if (curl) { 36 slist1 = curl_slist_append(slist1, "Authorization: Bearer Access Token"); 37 38 curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, 102400L); 39 curl_easy_setopt(curl, CURLOPT_URL, "https://notify-api.line.me/api/notify"); 40 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); 41 curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 42 mime1 = curl_mime_init(curl); 43 part1 = curl_mime_addpart(mime1); 44 45 curl_mime_data(part1, "TEST", CURL_ZERO_TERMINATED); 46 curl_mime_name(part1, "message"); 47 curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime1); 48 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 49 curl_easy_setopt(curl, CURLOPT_USERAGENT, "curl/7.67.0"); 50 curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 50L); 51 curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_NONE); 52 curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); 53 curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); 54 res = curl_easy_perform(curl); 55 56 curl = NULL; 57 curl_mime_free(mime1); 58 mime1 = NULL; 59 curl_slist_free_all(slist1); 60 slist1 = NULL; 61 res = curl_easy_perform(curl); 62 63 64 } 65 66 curl_easy_cleanup(curl); 67 curl_global_cleanup(); 68 69 return 1; 70}
試したこと
curl_global_init(CURL_GLOBAL_ALL);からすでに未解決エラーが出ているようでした
補足情報(FW/ツールのバージョンなど)
libcurl.libを【リンカー】→【入力】でリンクしております。
また、それでもだめでしたので、フルパスで入力してみましたが、だめでした。
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 08:38
退会済みユーザー
2020/05/12 13:10
2020/05/12 14:10
退会済みユーザー
2020/05/13 01:36
2020/05/13 04:00
2020/05/13 04:16
2020/05/13 05:16
退会済みユーザー
2020/05/13 05:22
2020/05/13 05:35