powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / создание простой DLL
20 сообщений из 20, страница 1 из 1
создание простой DLL
    #32731563
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать ДЛЛ?

Кроме сомого файла 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.
...
Рейтинг: 0 / 0
создание простой DLL
    #32731638
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в какой среде? (да без разницы...)

Надо сначала открыть проект, который будет называться типа "dll..."
и вот в нём уже писать/добавлять свои файлы.

А как оно работает и как линковать функции - это уже другая песня...
...
Рейтинг: 0 / 0
создание простой DLL
    #32731647
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, наверное, должна быть точка входа в dll (DllMain)
В файле .def желательно указать имя экспортируемой функции в секции EXPORTS (правда, говорят, что это старый метод и можно как-то без него). В объявлении, в принципе, достаточно _declspec(dllexport). Насчет ошибки: посмотри по F1 - может поможет.
...
Рейтинг: 0 / 0
создание простой DLL
    #32731665
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я эту ошибку в MSDN искала...
Не нашла :(
...
Рейтинг: 0 / 0
создание простой DLL
    #32731691
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курсором на ошибку встаньте (в окне Build, кажется ) и F1
...
Рейтинг: 0 / 0
создание простой DLL
    #32731695
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, проблема в том, что ваша функция имеет то же имя, что и функция API. Попробуйте назвать функцию по другому (хотя бы OpenFile1).
...
Рейтинг: 0 / 0
создание простой DLL
    #32731719
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OpenFile - стандартная виндовая функция. Ты либо не включай заголовки windows для ее объявления, либо называй свою функцию как-то по другому.
Ксати, объявлять ее extern "C" вовсе и не обязательно.

Как создать DLL - ты сначала нам скажи, какие средства разработки ты используешь.
...
Рейтинг: 0 / 0
создание простой DLL
    #32731724
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция в таком виде:

#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

Может кто-то уже сталкивался с такой?
...
Рейтинг: 0 / 0
создание простой DLL
    #32731741
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую Visual C++ 6.0
Или в вы про что-то другое спрашиваете?
Я хочу создать ДЛЛ которая будет открывать файл его стандартным приложением и следать из этой ДЛЛ xp_procedure для MS SQL Server
...
Рейтинг: 0 / 0
создание простой DLL
    #32731757
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ хочу создать ДЛЛ которая будет открывать файл его стандартным приложением и следать из этой ДЛЛ xp_procedure для MS SQL Server

Что то вы намудрили. Вы имеете в виду Extended Stored Procedure (т.е. ХП, оформленная в виде DLL)? Какой тогда смысл открывать в ней файл стандартным приложением? Объясните вашу задачу поподробнее, плиз.

А что ДЛЛ не комплиться, расскажите, какой тип проекта вы для нее выбрали.
...
Рейтинг: 0 / 0
создание простой DLL
    #32731783
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача такая. Имеется база документооборота. Интерфейс написан на АСП, сама база на SQL Server-е.
В базу надо добавить функцию изменения вложений (т.е. имеется письмо и вложение. Вложения лежат на сервере). Средствами HTML\ASP вложение можно открыть только на чтение, а надо наизменение.
Допустим, принажатии на ссылку с именем вложения, файл вложения копируется на общий сетевой диск, открывается оттуда, его меняют, потом файл копируется обратно на свое место на сервере. (как обратно - еще не знаю - но придумаю :)


При создании ДЛЛ - проект Win 32 Dynamic-Link Library
...
Рейтинг: 0 / 0
создание простой DLL
    #32731797
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда почему бы , для этого не юзать BLOB-ы ?!!

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
создание простой DLL
    #32731868
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотелось бы решить этот вопрос без переноса файлов вложения в базу...
...
Рейтинг: 0 / 0
создание простой DLL
    #32731883
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда открывайте файл со стороны клиента ...


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
создание простой DLL
    #32731892
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае, ваше решение с ДЛЛ неправильное. Т.к. вложение будет открыто на сервере (там же, где установлен SQL Server).

авторСредствами HTML\ASP вложение можно открыть только на чтение, а надо наизменение
Вроде не так. Если я в HTML напишу <a href=mydoc.doc>Doc</a> то все нормально открывается/редактируется. В крайнем случае надо перенстроить IE, чтобы запускал Ворд, а не открывал документ в своем окне.
...
Рейтинг: 0 / 0
создание простой DLL
    #32731898
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если так писать - то все конечно редактируется, но только в виде "save as", т.е. измененный файл сохраняется где-то на машине пользователя...
...
Рейтинг: 0 / 0
создание простой DLL
    #32731922
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли так писать - то все конечно редактируется, но только в виде "save as", т.е. измененный файл сохраняется где-то на машине пользователя...

Гм...

У меня Word 2000, IE 6, все работает. Может вы имеете в виду, что в меню Файл пункт "Сохранить" отключен? Но CTRL+S, тем не менее, работает. Более того, если вы поправите текст и попробуете закрыть окно, то он спросит, сохранить изменения или нет.

Еще возможная причина: исходные файлы помечены, как read-only.
...
Рейтинг: 0 / 0
создание простой DLL
    #32732018
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все так и есть....
только сохранить он предлагает все равно на диске машины пользователя...
...
Рейтинг: 0 / 0
создание простой DLL
    #32732103
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то странно все это, только что проверил, все работает и сохраняется. Точно файл не read-only?

Тогда можно только предложить написать простенький ActiveX. Внедряем его в вебстраницу, он ловит двойной (или еще какой) клик мышки и вызывает заветный ShellExecute() :)
...
Рейтинг: 0 / 0
создание простой DLL
    #32732403
Eugenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл:
#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
подскажите как быть?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / создание простой DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]