|
|
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Как создать ДЛЛ? Кроме сомого файла cpp, который в мое м случае выглядит данным образом: #include "stdafx.h" #include "resource.h" #include <string> extern "C" _declspec(dllexport) void OpenFile(char *path) { ShellExecute (NULL,"edit", path,NULL,NULL,SW_NORMAL); } Должно ли быть что-то еще? Вопрос связан с тем, что при компиляции этого файла имеет место быть такая ошибка: E:\Eugenia\C++\dll\OpenFile\OpenFileSourse.cpp(7) : error C2733: second C linkage of overloaded function 'OpenFile' not allowed E:\Eugenia\C++\dll\OpenFile\OpenFileSourse.cpp(6) : see declaration of 'OpenFile' Error executing cl.exe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:10 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Это в какой среде? (да без разницы...) Надо сначала открыть проект, который будет называться типа "dll..." и вот в нём уже писать/добавлять свои файлы. А как оно работает и как линковать функции - это уже другая песня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:47 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Ну, наверное, должна быть точка входа в dll (DllMain) В файле .def желательно указать имя экспортируемой функции в секции EXPORTS (правда, говорят, что это старый метод и можно как-то без него). В объявлении, в принципе, достаточно _declspec(dllexport). Насчет ошибки: посмотри по F1 - может поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:50 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Я эту ошибку в MSDN искала... Не нашла :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:58 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Курсором на ошибку встаньте (в окне Build, кажется ) и F1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:07 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Похоже, проблема в том, что ваша функция имеет то же имя, что и функция API. Попробуйте назвать функцию по другому (хотя бы OpenFile1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:11 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
OpenFile - стандартная виндовая функция. Ты либо не включай заголовки windows для ее объявления, либо называй свою функцию как-то по другому. Ксати, объявлять ее extern "C" вовсе и не обязательно. Как создать DLL - ты сначала нам скажи, какие средства разработки ты используешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:19 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Функция в таком виде: #include "stdafx.h" _declspec(dllexport) void OpenFile1(char * path) { ShellExecute (NULL,"edit", path,NULL,NULL,SW_NORMAL); } дает ошибку: libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Может кто-то уже сталкивался с такой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:20 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Использую Visual C++ 6.0 Или в вы про что-то другое спрашиваете? Я хочу создать ДЛЛ которая будет открывать файл его стандартным приложением и следать из этой ДЛЛ xp_procedure для MS SQL Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:25 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
авторЯ хочу создать ДЛЛ которая будет открывать файл его стандартным приложением и следать из этой ДЛЛ xp_procedure для MS SQL Server Что то вы намудрили. Вы имеете в виду Extended Stored Procedure (т.е. ХП, оформленная в виде DLL)? Какой тогда смысл открывать в ней файл стандартным приложением? Объясните вашу задачу поподробнее, плиз. А что ДЛЛ не комплиться, расскажите, какой тип проекта вы для нее выбрали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:33 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Задача такая. Имеется база документооборота. Интерфейс написан на АСП, сама база на SQL Server-е. В базу надо добавить функцию изменения вложений (т.е. имеется письмо и вложение. Вложения лежат на сервере). Средствами HTML\ASP вложение можно открыть только на чтение, а надо наизменение. Допустим, принажатии на ссылку с именем вложения, файл вложения копируется на общий сетевой диск, открывается оттуда, его меняют, потом файл копируется обратно на свое место на сервере. (как обратно - еще не знаю - но придумаю :) При создании ДЛЛ - проект Win 32 Dynamic-Link Library ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:42 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Ну тогда почему бы , для этого не юзать BLOB-ы ?!! ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:45 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
хотелось бы решить этот вопрос без переноса файлов вложения в базу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 12:05 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
тогда открывайте файл со стороны клиента ... ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 12:10 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
В любом случае, ваше решение с ДЛЛ неправильное. Т.к. вложение будет открыто на сервере (там же, где установлен SQL Server). авторСредствами HTML\ASP вложение можно открыть только на чтение, а надо наизменение Вроде не так. Если я в HTML напишу <a href=mydoc.doc>Doc</a> то все нормально открывается/редактируется. В крайнем случае надо перенстроить IE, чтобы запускал Ворд, а не открывал документ в своем окне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 12:15 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Если так писать - то все конечно редактируется, но только в виде "save as", т.е. измененный файл сохраняется где-то на машине пользователя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 12:17 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
авторЕсли так писать - то все конечно редактируется, но только в виде "save as", т.е. измененный файл сохраняется где-то на машине пользователя... Гм... У меня Word 2000, IE 6, все работает. Может вы имеете в виду, что в меню Файл пункт "Сохранить" отключен? Но CTRL+S, тем не менее, работает. Более того, если вы поправите текст и попробуете закрыть окно, то он спросит, сохранить изменения или нет. Еще возможная причина: исходные файлы помечены, как read-only. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 12:26 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
все так и есть.... только сохранить он предлагает все равно на диске машины пользователя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:02 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Что-то странно все это, только что проверил, все работает и сохраняется. Точно файл не read-only? Тогда можно только предложить написать простенький ActiveX. Внедряем его в вебстраницу, он ловит двойной (или еще какой) клик мышки и вызывает заветный ShellExecute() :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:29 |
|
||
|
создание простой DLL
|
|||
|---|---|---|---|
|
#18+
Файл: #include "stdafx.h" _declspec(dllexport) void OpenFile1(char * path) { ShellExecute (NULL,"edit", path,NULL,NULL,SW_NORMAL); } компилируется. Создается файл - OpenFileProj.dll для проверки написала программку - #include <windows.h> #include <stdio.h> void main() { HINSTANCE h; void (*dllFunc) (char *str); h=LoadLibrary("OpenFileProj.dll"); if (!h) {printf ("Error - can't find OpenFileProj.dll\n"); return;} dllFunc=(void (*) (char *str)) GetProcAddress (h,"OpenFile1"); dllFunc ("E:\\Eugenia\\Òåñòèê.doc"); FreeLibrary(h); } Компилируется нормально, но при запуске - ошибка: LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 подскажите как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 15:15 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32731922&tid=2034283]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 296ms |

| 0 / 0 |
