1 / 1 / 1
Регистрация: 19.04.2018
Сообщений: 101

dll возвращающая текстовую строку

12.06.2024, 21:44. Показов 2519. Ответов 24
Метки dll (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе
Создал проект dll которая должна вернуть строку
C++
1
2
3
4
5
6
7
8
9
10
// MathLibrary.h - Contains declarations of math functions
#pragma once
 
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
 
extern "C" MATHLIBRARY_API string GetHWID();
и
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// MathLibrary.cpp : Defines the exported functions for the DLL.
#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier
#include <utility>
#include <limits.h>
#include "MathLibrary.h"
#include <windows.h>
#include <string>
#include <iostream>
#include <sstream>
#include <fstream>
 
using namespace std;
 
string GetHWID()
{
    string initstring;
    initstring = "Error : string is null";
    UCHAR szFileSys[255], szVolNameBuff[255];
    DWORD dwSerial;
    DWORD dwMFL;
    DWORD dwSysFlags;
    int error = 0;
 
    bool fail = GetVolumeInformationA("C:\\", (LPSTR)szVolNameBuff, 255, &dwSerial, &dwMFL, &dwSysFlags, (LPSTR)szFileSys, 255);
    if (!fail) {
        initstring = "Error : Not elevated (please run this with admin rights)";
        return initstring;
    }
 
    stringstream hwidstream;
    hwidstream << hex << dwSerial;
 
    string HWID = hwidstream.str();
 
    for (int i = 0; i < HWID.length(); i++)
        HWID[i] += 6; // (you can change this to shift as much as you want)
 
    return HWID;
}
но VS ругается что я перегрузил функцию GetHWID()
Ошибка (активно) E0311 не удается перегрузить функции, различаемые только по типу возвращаемого значения MathLibrary C:\source\repos\MathLibrary\MathLibrary\ MathLibrary.cpp 18
Подскажите плиз что в этом коде не так?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2024, 21:44
Ответы с готовыми решениями:

Функция, конвертирующая число в строку и возвращающая указатель на эту строку
#include &lt;iostream&gt; using namespace std; int mystrlen(const char* str) { const char* cur = str; for (; *cur; ++cur); return...

Функция, реверсирующая строку и возвращающая указатель на новую строку
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; int mystrlen(const char* str) { const char* cur = str; for (;...

Инвертировать текстовую строку
добрый день! не работает код, помогите исправить ошибку #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;cstdlib&gt; ...

24
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
13.06.2024, 13:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от _tester_ Посмотреть сообщение
Сейчас что не так?
В шапке
Чтобы распознавался BSTR нужно добавить заголовочный файл wtypes.h
0
1 / 1 / 1
Регистрация: 19.04.2018
Сообщений: 101
13.06.2024, 14:01  [ТС]
При вызове любой функции дает
Code
1
Была сделана попытка загрузить программу, имеющую неверный формат.
Добавлено через 1 минуту
полный код. #include <wtypes.h> включен

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// MathLibrary.h - Contains declarations of math functions
#pragma once
#include <wtypes.h>
//#include <string>
 
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
 
extern "C" MATHLIBRARY_API void fibonacci_init(
    const unsigned long long a, const unsigned long long b);
 
extern "C" MATHLIBRARY_API bool fibonacci_next();
 
extern "C" MATHLIBRARY_API unsigned long long fibonacci_current();
 
extern "C" MATHLIBRARY_API unsigned fibonacci_index();
 
extern "C" MATHLIBRARY_API BSTR GetHWID();
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
13.06.2024, 14:33
Цитата Сообщение от _tester_ Посмотреть сообщение
Все равно не работает
а что не работает? У меня твоя либа скомпилировалась без ошибок. Значит что-то не так с кодом C#
0
1 / 1 / 1
Регистрация: 19.04.2018
Сообщений: 101
13.06.2024, 14:46  [ТС]
У меня тоже dll-ка компилируется без ошибок. Но при подключении к проекту c# дает ошибку "Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)"
Раз ошибок нет, то перейду в ветку про с#
Спасибо большое
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
13.06.2024, 16:28
_tester_, проверьте разрядность получившейся библиотеки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2024, 16:28

Указатель на константную текстовую строку
С точки зрения стандарта это валидный код? int main() { char* pproverb{ &quot;A miss is as good as a mile.&quot; }; return 0; ...

Как правильнее ввести текстовую строку
почему стандартный ввод небезопасен? что лучше делать так char str; char *s; s = gets( str ); почему лучше так?

Выполнить С++ код записанный в текстовую строку
#include &lt;stdio.h&gt; int execute(const char* f) { //todo } int main () { char* func=&quot;printf(\&quot;hello!\&quot;);&quot;; ...

Вывести четные числа записанные в текстовую строку
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки.

Описать функцию, которая формирует текстовую строку
Дан текст в файле F1 в виде: ИМЯ ОТЧЕСТВО ФАМИЛИЯ_1 ИМЯ ОТЧЕСТВО ФАМИЛИЯ_2 ... Описать функцию, которая формирует текстовую строку...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru