|
分類:[C/C++]
Docuworksのプラグインを作成したく、Docuworksの開発キットをDLしました。 私のスキルとして、VB.Netは多少組めますが、キットのサンプルコードはC言語(C++かC#なのか分からず)で ゼロ近い素人です。それでもプラグインソフトを作成したい気持ちが強く、何とかサンプルのエラーを取ることが でき実行及び確認までこぎつけました。正しく表示されました。 ここから、ドキュファイルのハンドルを取得し、色々なことを実現したかったのですが、「XDW_OpenDocumentHandle」 を挿入した時点で、ビルド後のエラーメッセージにあるようなエラーが発生し、DLLが作成出来ません。
xdwapiwn.dllかxdwapi.dll辺りを参照させれば良いと思いますが、VB.Netの様にはいかず、C言語では違うのでしょうか? Plgsmplプロパティページのダイアログから参照ー>新しい参照の追加と流れても、「項目が見つかりません」と表示されます。 参照が出来るようになればと思いますが、もう、皆目見当がつきません、どうか堪能な方お教えください。宜しくお願いします。
環境 DocuWorks Development Tool Kit 7.3 日本語版 VS Express2013 for DeskTop Windows10
○サンプルコード(変更後のコード、変数やXDW_OpenDocumentHandle関数を追加) Docu SDK\dwsdk730jpn\PLUGINSPI\PLGSMPL // File: plgsmpl.c −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#include <windows.h> #include <stdio.h> #include <string.h> #include "mpplugin.h" #include "resource.h" #include <xdw_api.h> HINSTANCE myInst = NULL; __declspec(dllexport) long __stdcall DllMain(HANDLE hInst, unsigned long reason, void* lpReserved) { myInst = hInst; return 1; }
PLUGGEDIN_EXPORT(long) PLG_ExecuteCommand(PLUGGEDIN_STRUCT *ps) { /* このコマンド実行の途中、引数として渡されるDWファイルは開放されています。 読み書き可能でアクセスできます。 */
char *buf = NULL; char *tmp1 = NULL; char *path = NULL; int i = 0; //文書の個数 int j = 0; //各文書のページ番号 int result; long last_page = 100; XDW_DOCUMENT_HANDLE h = NULL; XDW_OPEN_MODE_EX mode = { sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; int api_result = 0; XDW_DOCUMENT_INFO info = { sizeof(XDW_DOCUMENT_INFO), 0, 0, 0 }; // XDW_GetPageInformation XDW_PAGE_INFO infoP = { sizeof(XDW_PAGE_INFO), 0, 0, 0, 0, 0, 0, 0 };
buf = (char *)LocalAlloc(LMEM_FIXED, 32 + (MAX_PATH * ps->ps_nFiles)); tmp1 = (char *)LocalAlloc(LMEM_FIXED, MAX_PATH); path = (char *)LocalAlloc(LMEM_FIXED, MAX_PATH); strcpy(buf, "Arg files:"); for (i = 0; i< ps->ps_nFiles; i++){ //* strcat(buf, " "); // _splitpath(ps->ps_pszFiles[i], tmp1, tmp1, path, tmp1); // strc*/at(buf, path); // 文書ハンドルを開く api_result = XDW_OpenDocumentHandle(ps->ps_pszFiles[i], &h, (XDW_OPEN_MODE*)&mode); if (api_result < 0) { // print_error(api_result); return 0; }
} MessageBox(GetFocus(), buf, "Plugin Sample", MB_OK);
LocalFree(buf); LocalFree(tmp1); LocalFree(path); return 1; } 以下省略
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ○追加したDocuWorksの関数(XDW_OpenDocumentHandle)正確なものでなくこんな感じのコードを追加した:抜粋) // 文書ハンドルを開く XDW_DOCUMENT_HANDLE h = NULL; XDW_OPEN_MODE_EX mode = { sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; api_result = XDW_OpenDocumentHandle(in_path, &h, (XDW_OPEN_MODE*)&mode); if (api_result < 0) { print_error(api_result); return 0; }
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ○ビルド後のエラーメッセージ エラー 2 error LNK2019: 未解決の外部シンボル _XDW_OpenDocumentHandle@12 が関数 _PLG_ExecuteCommand@4 で参照されました。 D:\Visual Studio 2013\Docu SDK\dwsdk730jpn\PLUGINSPI\PLGSMPL\Plgsmpl.obj PLGSMPL エラー 3 error LNK1120: 1 件の未解決の外部参照 D:\Visual Studio 2013\Docu SDK\dwsdk730jpn\PLUGINSPI\PLGSMPL\Debug\PLGSMPL.dll PLGSMPL
|