Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4

Как произвести запись в файл в dll библиотеке?

27.03.2020, 23:52. Показов 2372. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Значит смысл в следующем. Я хочу написать библиотеку(примитивный код)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
#define _DLLAPI extern "C" __declspec(dllexport)
 
_DLLAPI int __stdcall Funkt(int qa){
    ofstream file;
    file.open("Moyperviyzapisfiles.txt");//Moy perviy zapis files
    file<<"Informaziya";
    file.close();   
    return 12;}
Функция Funkt будет вызываться в сторонней программе коде да, и мне например нужно проверить со стороны dll а не со стороны которой она будет вызвана, что попало в функцию что чему равно и вывести это дело в файл, вообще предполагается передача массивов и т.д. Рассматривается вариант с созданием файла если его нет и последующей записью, или чтением и дозаписью в этот файл, если он создан. Данная функция вызывается и return 12; работает а вот файл не создаётся и ничего не происходит, что можно сделать в этом случае.?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2020, 23:52
Ответы с готовыми решениями:

Произвести вычисления в подпрограммах. Оформить подпрограммы в библиотеке DLL
- Ввести два целых числа a и b. - Произвести вычисления в подпрограммах. Оформить подпрограммы в библиотеке DLL. 1) функция -...

Как произвести запись в ini-файл
Ребята как в Windows Forms записывать в ini файл

Как произвести запись в типизированный файл
Здравствуйте прошу помочь с типизированными файлами а точнее как в них до записывать??? заранее спасибо!!!

13
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.03.2020, 09:10
1) Добавить проверку успешности открытия файла.
2) Ещё раз внимательно поискать файл, может удастся его найти в другой папке (наиболее вероятные места: папка проекта, папка в которой находится dll).
3) Если пункты 1 и 2 не сработают, прописать полный путь к файлу (например, "C:\\Temp\\my_file.txt").
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
28.03.2020, 17:47  [ТС]
Цитата Сообщение от likehood Посмотреть сообщение
1) Добавить проверку успешности открытия файла.
2) Ещё раз внимательно поискать файл, может удастся его найти в другой папке (наиболее вероятные места: папка проекта, папка в которой находится dll).
3) Если пункты 1 и 2 не сработают, прописать полный путь к файлу (например, "C:\\Temp\\my_file.txt").
Проверка успешности открытия файла мне ничего не даёт т.к. я с ней ничего не могу сделать, потому что это dll и что происходит с её стороны неизвестно, 2 вариант проверял файл не создаётся ни в папке проекта ни в том месте где установлена dll, но dll у меня передаётся по ссылке по жёсткому ключу из папки проекта в папку где находится программа к которой она подключается потому что очень тяжело каждый раз закрывать программы переписывать dll и копипастить файл, получается что прототипы в разных местах но я не знаю мешает ли это создать файл, буду экспериментировать. 3ий вариант не проверял т.к. не знаю как это делается какой-то сайт находил вчера попробую разобраться.
я пробовал cout но он тоже не срабатывает со стороны dll
Скажите а как в Visual Studio 2012 указать путь для сохранения созданных файлов.

Добавлено через 10 минут
Перебросил напрямую тоже файл не создаётся либо не знаю где нужно пробовать 3ий вариант
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.03.2020, 17:52
Цитата Сообщение от Nexi99 Посмотреть сообщение
3ий вариант не проверял т.к. не знаю как это делается
Хм, так я же написал пример полного пути. В чём тут проблема?
Цитата Сообщение от Nexi99 Посмотреть сообщение
Скажите а как в Visual Studio 2012 указать путь для сохранения созданных файлов.
Не совсем понял что такое "созданные файлы". Файлы в проекте или файлы, создаваемые самой программой? Если второе, то файлы, если не указан путь, создаются в текущем каталоге. Скорее всего, это каталог проекта (если программа запускается из среды разработки).
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
28.03.2020, 19:28  [ТС]
Цитата Сообщение от likehood Посмотреть сообщение
Не совсем понял что такое "созданные файлы". Файлы в проекте или файлы, создаваемые самой программой? Если второе, то файлы, если не указан путь, создаются в текущем каталоге. Скорее всего, это каталог проекта (если программа запускается из среды разработки).
Я имею в виду как изменить умолчательный путь по созданию тестовых файлов в результате таких манипуляций, чтобы они были не в каталоге с проектом а к примеру бросить на рабочий стол.
В общем не работает, файл не создаётся не читается, пробовал и путь указывать и искусственно копипастить. Сначала была ошибка
LINK : fatal error LNK1168:
Но потом я всё по закрывал чтобы не висело по совету из интернета, но всё равно, не пишет и не создаёт файл dll библиотекой вот пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
 
using namespace std;
 
#define _DLLAPI extern "C" __declspec(dllexport)
 
_DLLAPI int __stdcall Funkt(int qa){//"C:\\Program Files(x86)\\Forex4you\\MQL4\\Experts\\Moyperviyzapisfiles.txt\\Moyperviyzapisfiles.txt"
    ofstream file;//"C:\\Users\\123\\Documents\\Visual Studio 2012\\Projects\\ConsoleApplication8\\ConsoleApplication8\\Moyperviyzapisfiles.txt"
    //"C:\\Users\\123\\documents\\visual studio 2012\\Projects\\ConsoleApplication8\\Debug\\ConsoleApplication8.dll\\Moyperviyzapisfiles.txt"
    file.open("C:\\Program Files(x86)\\Forex4you\\MQL4\\Experts\\Moyperviyzapisfiles.txt\\Moyperviyzapisfiles.txt"/*,ios::out*/);//Moy perviy zapis files
    file<<"Moyperviyzapisfiles";//(string)qa
    file.close();   
    return 12;}
функция 12 возвращает а файл не создаёт и ничего туда не пишет, так что не знаю.

Добавлено через 19 минут
у меня есть немного ошибки с повторением Moyperviyzapisfiles.txt, я повтор убрал но ситуация не изменилась.
0
Отпрыск ChatGPT
 Аватар для Azawa
33 / 29 / 4
Регистрация: 18.06.2019
Сообщений: 152
28.03.2020, 21:38
Цитата Сообщение от Nexi99 Посмотреть сообщение
потому что это dll и что происходит с её стороны неизвестно
Дебаггером пользоваться пробовали? Попробуйте — не пожалеете. Освоив его однажды, в дальнейшем сэкономите себе кучу времени и сил.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
28.03.2020, 22:13  [ТС]
Цитата Сообщение от Azawa Посмотреть сообщение
Дебаггером пользоваться пробовали?
Я не знаю как это работает в dll, да ещё и учитывая то что библиотека подключена к битой статической оболочке которая и далеко не стояла с с++, но выхода нет мучаюсь как могу. Покажите пример, напишите примитивный dll подключите эту dll(к чему угодно но не к с++, но если этого чего угодно нет то можно и к с++) и запустите опишите текстом что где должно быть. В принципе не обязательно выводить в файл(но в файл приоритет потому что в файле можно копировать данные). Мне посоветовали этот способ не проверив ничего я по экспериментировал результат 0.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
11.04.2020, 18:11  [ТС]
Цитата Сообщение от likehood Посмотреть сообщение
1) Добавить проверку успешности открытия файла.
2) Ещё раз внимательно поискать файл, может удастся его найти в другой папке (наиболее вероятные места: папка проекта, папка в которой находится dll).
3) Если пункты 1 и 2 не сработают, прописать полный путь к файлу (например, "C:\\Temp\\my_file.txt").
В общем проверил что мог, прихожу к выводу что запись в файл dll библиотекой невозможен. Есть ещё варианты как сделать так чтобы библиотека могла записывать в файл? Указанные вами советы помогают и работают для консольных приложений.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.04.2020, 21:41
В Program Files не запишется. Другой путь используй. В Документы, например. Или в какую-то папку в корневом каталоге.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
11.04.2020, 22:30  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
В Program Files не запишется. Другой путь используй. В Документы, например. Или в какую-то папку в корневом каталоге.
Не работает а вы проверяли? 12 выводится а файл не создаётся и ничего естественно туда не пишется но даже в готовый созданный не пишется.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
12.04.2020, 00:09
Nexi99, чтобы в Program Files что-либо записать, программа должна запускаться с правами Администратора.
Цитата Сообщение от Nexi99 Посмотреть сообщение
C:\\Program Files(x86)\\Forex4you\\MQL4\\Experts\\Mo yperviyzapisfiles.txt\\Moyperviyzapisfil es.txt
Это точно правильный путь? Спрашиваю, потому что Program Files(x86) на самом деле обычно называться Program Files (x86).
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
12.04.2020, 00:47
Цитата Сообщение от Nexi99 Посмотреть сообщение
Moyperviyzapisfiles.txt\\Moyperviyzapisf iles.txt
Также вызывает сомнение вот это повторение, это точно то, что вы хотели? Записать Файл Moyperviyzapisfiles.txt в Каталог Moyperviyzapisfiles.txt?

Добавлено через 58 секунд
Это в дополнение к этому:
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Это точно правильный путь? Спрашиваю, потому что Program Files(x86) на самом деле обычно называться Program Files (x86).
1
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
12.04.2020, 13:11  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Также вызывает сомнение вот это повторение, это точно то, что вы хотели? Записать Файл Moyperviyzapisfiles.txt в Каталог Moyperviyzapisfiles.txt?
То повторение я убрал но вот последний путь который я использовал.
C++
1
2
3
file.open("C:\\Users\\123\\Desktop\\Moyperviyzapisfiles.txt");
    file<<"Moyperviyzapisfiles";//(string)qa
    file.close();
Я копипастер, нужно было вручную поставить этот пробел. В общем вот так заработало. А может и по вашему примеру заработает. Перепугался я до чёртиков. Спасибо за советы, получается что библиотекой тоже можно создавать файлы, это в корне меняет дело.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
20.04.2020, 01:05  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Также вызывает сомнение вот это повторение, это точно то, что вы хотели? Записать Файл Moyperviyzapisfiles.txt в Каталог Moyperviyzapisfiles.txt?
А можно ли сделать так чтобы после записи в файл, этот файл автоматически открывался, а то приходится его каждый раз находить где он сидит и открывать руками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2020, 01:05
Помогаю со студенческими работами здесь

Как исправить ошибку: "Точка входа в процедуру не найдена в библиотеке DLL Qt5Core.dll" ?
При запуске приложения выдает ошибку точка входа в процедуру ?resetFormat@QDebug@@QAEAAV1@XZ не найдена в библиотеке DLL Qt5Core.dll.

Можно ли произвести запись в файл напрямую, не используя переменные
можно ли прямо в файл писать не копируя содержимое в переменную или массив. есть файл такой вот структуры: __________ имя фамилия ...

Массив: Ввести одномерные массивы X и Y и произвести запись данных в файл
Задание:Ввести одномерные массивы x = {4.1, 16, 0, -3.2, 12} и Y = {4, 5.1, 6} и произвести запись данных в дат файл. Объединить их в...

Как изменить строку в dll библиотеке?
Здравствуйте! Суть проблемы такова: мне нужно поменять значение цвета в одной из строк библиотеки, используемой для оформления winforms. Я...

Произвести запись программы в файл и при завершении подать звуковой сигнал
#include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #define N 12 #define M 9 int main(void) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru