Непонятки с MAPISendMail
От: Zipper555  
Дата: 14.11.02 16:05
Оценка:
Хочу вызвать окно "Создать сообщение" и приаттачить файл. Пытаюсь сделать через MAPISendMail, но при линковке имею
[Linker Error] Unresolved external 'MAPISendMail' referenced from D:\WINDOWS XP\ÏÐÎÃÐÀÌÌÛ\ÁËÎÊÍÎÒ XP\NOTEUNIT.OBJ

код:
MapiFileDesc desc;
desc.lpszPathName = "D:\\";
desc.lpszFileName = "g.txt";
MapiMessage msg;
msg.lpFiles = &desc;
MAPISendMail( NULL, (ULONG)Form1->Handle, &msg, MAPI_DIALOG | MAPI_LOGON_UI , NULL);

Народ, помогите, плиз, сделать это правильно!
Re: Непонятки с MAPISendMail
От: Zipper555  
Дата: 14.11.02 16:07
Оценка:
Сорри:
[Linker Error] Unresolved external 'MAPISendMail' referenced from D:\WINDOWS XP\ПРОГРАММЫ\БЛОКНОТ XP\NOTEUNIT.OBJ
Re: Непонятки с MAPISendMail
От: Andrew S Россия http://alchemy-lab.com
Дата: 14.11.02 16:15
Оценка:
Добавь в список блиотек DMAPIW32.LIB.

Z>Хочу вызвать окно "Создать сообщение" и приаттачить файл. Пытаюсь сделать через MAPISendMail, но при линковке имею

Z>[Linker Error] Unresolved external 'MAPISendMail' referenced from D:\WINDOWS XP\ÏÐÎÃÐÀÌÌÛ\ÁËÎÊÍÎÒ XP\NOTEUNIT.OBJ

Z>код:

Z>
Z>MapiFileDesc desc;
Z>desc.lpszPathName = "D:\\";
Z>desc.lpszFileName = "g.txt";
Z>MapiMessage msg;
Z>msg.lpFiles = &desc;
Z>MAPISendMail( NULL, (ULONG)Form1->Handle, &msg, MAPI_DIALOG | MAPI_LOGON_UI , NULL);
Z>

Z>Народ, помогите, плиз, сделать это правильно!
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: Непонятки с MAPISendMail
От: VVV Россия  
Дата: 14.11.02 18:04
Оценка:
Здравствуйте Zipper555, Вы писали:

Z>Сорри:

Z>[Linker Error] Unresolved external 'MAPISendMail' referenced from D:\WINDOWS XP\ПРОГРАММЫ\БЛОКНОТ XP\NOTEUNIT.OBJ

Вот что есть в "Ask Dr. GUI #41" (July/August 1998) — не нашёл на Микрософте, поэтому дам выдержку здесь. Как мне кажется эта проблема до сих присутствут — и в VS6.0

I Wanna Send Myself an E-mail . . .

Dear Dr. GUI,

I am trying to send a message using MAPISendMail function.

The program compiles correctly but gives a linker error (MainFrm.obj: error LNK2001: unresolved external symbol _MAPISendMail@20). (I have included the mapi.h header file.) I have checked the lib directory. It does contain mapi.lib and mapi32.lib files. I am using MAPISendMail in an MFCAppWizard-generated project.

I am using Microsoft Developer Studio and Visual C++ 5.0 on Windows NT 4.0.

Thanks for your help,
Saayan Choudhury

Dr. GUI replies:

If you're not getting enough e-mail, send your own! Actually, sending e-mail to yourself is a great way to test e-mail functionality in your apps-and it keeps you from sending lots of e-mail to others.

The problem is that MAPI32.LIB does not export the Simple MAPI functions. Therefore, in order to use the Simple MAPI functions, you must make a call to LoadLibrary() to load the appropriate DLL (MAPI.DLL or MAPI32.DLL). Then you can call GetProcAddress() to obtain pointers to each of the functions you would like to use.

For more information, please see the topic "Initializing a Simple MAPI Client" in the Microsoft Developer Network Library. For sample code, please see the following article in the Microsoft Knowledge Base: Q171096, "FILE: Simple MAPI Console Application," located at http://support.microsoft.com/support/kb/articles/q171/0/96.asp.

If you're using Microsoft Foundation Classes (MFC) and are trying to send a copy of the current document, note that AppWizard has an option to add a Send command on the File menu. If you forgot, don't despair: there's a MAPI component in the component selection. In version 5.0, you get to this by selecting Add to Project from the Project menu, selecting Components and Controls, and then selecting Developer Studio Components to get to the Components and Controls Gallery. (This is one of the slickest features of Visual C++, and perhaps one of the most underused.)

By the way, if you ever need to know how different AppWizard options generate code, it's easy: just run AppWizard with the different options, and then run WinDiff (supplied with Visual C++) on the projects. The differences are the changes you'll have to apply to your program. Dr. GUI sometimes makes a copy of the AppWizard output for important projects just in case he needs to change some of the AppWizard options.
Re[2]: Непонятки с MAPISendMail
От: Zipper555  
Дата: 14.11.02 18:21
Оценка:
Здравствуйте Andrew S, Вы писали:

AS>Добавь в список блиотек DMAPIW32.LIB.


А где эта библиотека находится? И где он, этот список библиотек в CBuilder6?
Re[3]: Непонятки с MAPISendMail
От: VVV Россия  
Дата: 14.11.02 18:32
Оценка:
Здравствуйте Zipper555, Вы писали:

Z>Здравствуйте Andrew S, Вы писали:


AS>>Добавь в список блиотек DMAPIW32.LIB.


Z>А где эта библиотека находится? И где он, этот список библиотек в CBuilder6?


Если это Борланд, то раньше вместе с ним шла утилита IMPLIB.EXE (поищи у Борланда в каталоге BIN) с помощью этой утилиты можно сделать импорт LIB от любой DLL. Находишь в <System> MAPI32.DLL, запускаешь implib
implib.exe mapi32.lib mapi32.dll
получаешь mapi32.lib — добавляешь в проект.

Не видел CBuilder6, но раньше у Борландов было так.
Re[4]: Непонятки с MAPISendMail
От: Zipper555  
Дата: 14.11.02 18:44
Оценка:
Здравствуйте VVV, Вы писали:

VVV>Находишь в <System> MAPI32.DLL,

Нашел в c:\windows\system32

VVV>получаешь mapi32.lib — добавляешь в проект.

А где я mapi32.lib получаю?
Кстати, во время выполнения implib имею warning duplicate symbol, например:

Warning duplicate symbol: FGetComponentPath.
Re[5]: Непонятки с MAPISendMail
От: VVV Россия  
Дата: 14.11.02 18:54
Оценка:
Здравствуйте Zipper555, Вы писали:

Z>Здравствуйте VVV, Вы писали:


VVV>>Находишь в <System> MAPI32.DLL,

Z>Нашел в c:\windows\system32

VVV>>получаешь mapi32.lib — добавляешь в проект.

Z>А где я mapi32.lib получаю?
Z>Кстати, во время выполнения implib имею warning duplicate symbol, например:

Z>Warning duplicate symbol: FGetComponentPath.



Borland Implib Version 2.0.140.1 Copyright (c) 1991, 1997 Borland International

Syntax: IMPLIB [options] libname[.lib] [@respfile | srcname] [srcname ...]
Options:
-c Case sensitive symbols
-f Force imports by name (with hints)
-i Ignore WEP
-o Remove module extensions (16bit Windows)
-w No Warnings

Respfile may contain a list of source files to process.
Wildcards are ok for .DLL and .DEF file names.


Создаёшь временный фолдер TMP
копируешь туда mapi32.dll
идёшь в этот фолдер
запускаешь из командной строки implib mapi32.lib mapi32.dll
в фолдере TMP появится новый файл mapi32.lib
копируешь его в свой фолдер проекта
в проект подключаешь mapi32.lib
фолдер TMP убиваешь.

----------
Всё, конечно, можно сделать прямо в <System> (без убийства mapi32.dll конечно ) но, на всякий случай, лучше в отдельном фолдере.
Re[2]: Непонятки с MAPISendMail
От: Andrew S Россия http://alchemy-lab.com
Дата: 14.11.02 19:51
Оценка:
Это в VC. Почитай, плз, правила написания вопросов, ладно?
А тут да, в mapi32.lib этого импорта нет. Придется ручками, как VVV пишет.

AS>Добавь в список блиотек DMAPIW32.LIB.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Непонятки с MAPISendMail
От: Аноним  
Дата: 03.06.08 09:14
Оценка:
Здравствуйте, Zipper555, Вы писали:

Z>Хочу вызвать окно "Создать сообщение" и приаттачить файл. Пытаюсь сделать через MAPISendMail, но при линковке имею

Z>[Linker Error] Unresolved external 'MAPISendMail' referenced from D:\WINDOWS XP\ÏÐÎÃÐÀÌÌÛ\ÁËÎÊÍÎÒ XP\NOTEUNIT.OBJ

Z>код:

Z>
Z>MapiFileDesc desc;
Z>desc.lpszPathName = "D:\\";
Z>desc.lpszFileName = "g.txt";
Z>MapiMessage msg;
Z>msg.lpFiles = &desc;
Z>MAPISendMail( NULL, (ULONG)Form1->Handle, &msg, MAPI_DIALOG | MAPI_LOGON_UI , NULL);
Z>

Z>Народ, помогите, плиз, сделать это правильно!

desc.lpszPathName должно содержать следующее: "D:\\g.txt" — это путь к файлу
desc.lpszFileName должно содержать имя, которое отобразится в маил-клиенте, как имя аттача.
А откуда ошибка линковки — хз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.