Опитвам се да направя проста HelloWorld DLL в C++, за да науча да използвам C++ DLL за първи път. Но когато се опитвам да изградя моя проект, съдържащ моя метод, винаги получавам грешката error LNK1107: invalid or corrupt file: cannot read at 0x2B8 C:\Users\octavio\Documents\Visual Studio 2013\Projects\UseOfDll\UseOfDll\HelloWorldDll.dll
.
В моя UseOfDll
проект добавих C:\Users\octavio\Documents\Visual Studio 2013\Projects\UseOfDll\UseOfDll\HelloWorldDll.dll
към Project > UseOfDll Properties > Linker > Input > Additional Dependecies
. Добавих също HelloWorldDll.dll
и HelloDll.h
към директорията на проекта UseOfDll
.
Това е основният метод на програмата (наречен UseOfDll
), който използва DLL:
// UseOfDll.cpp ----------------------------------------------------
#include "stdafx.h"
#include "HelloDll.h"
int _tmain(int argc, _TCHAR* argv[]) {
HelloDll helloDll;
helloDll.hello();
HelloDll::helloStatic();
getchar();
return 0;
}
В моя отделен проект на Visual Studio за DLL имам:
// HelloDll.h ------------------------------------------------------
#pragma once
#ifdef DLLDIR_EX
#define DLLDIR __declspec(dllexport) // export DLL information
#else
#define DLLDIR __declspec(dllimport) // import DLL information
#endif
class HelloDll {
public:
HelloDll();
~HelloDll();
void hello();
static void helloStatic();
};
// HelloDll.cpp ----------------------------------------------------
#include "stdafx.h"
#include "HelloDll.h"
#include <iostream>
using namespace std;
HelloDll::HelloDll() {}
HelloDll::~HelloDll() {}
void HelloDll::hello() {
cout << "Hello World of DLL" << endl;
}
void HelloDll::helloStatic() {
cout << "Hello World of DLL static" << endl;
}
#ifdef DLLDIR_EX
? - person roscioli   schedule 22.05.2014.lib
файл ли е? И трябва ли да добавя файла.lib
към Linker › Input › Additional Dependencies само не файла.dll
)? И накрая, когато компилирам своя DLL проект, не получавам.lib
файл. Конфигурирам ли нещо неправилно? - person roscioli   schedule 22.05.2014__declspec(dllexport)
и къде? - person roscioli   schedule 22.05.2014