ورود

View Full Version : سوال: خطا در هدر فایل



mahnaz0098
شنبه 14 مرداد 1391, 22:39 عصر
سلام
من یه فایل هدر ساختم به نام First.h وقتی که می خوام build کنم دو تا خطا نشون میده که نمی دونم چه طور برطرفش کنم . لطفا راهنماییم کنید .

.......Error 1 error LNK2001: unresolved external symbol __DllMainCRTStartup@12 C:\Users

.....Error 2 error LNK1120: 1 unresolved externals C:\Users



#include <windows.h>

BOOL WINAPI DllMain (
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpReserved )
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
break;

case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;

case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
extern "C" __declspec(dllexport) int CountLowerChar(char *str)
{
int str_size = strlen(str);
int char_count = 0;

for ( int i = 0; i < str_size; i++ ) {
if ( islower(str[i]) ) {
char_count++;
}
}
return char_count;
}

#target
شنبه 14 مرداد 1391, 23:37 عصر
باید یک فایل cpp داشته باشی !یکی بساز داخلش بنویس
#include "First.h"

mahnaz0098
یک شنبه 15 مرداد 1391, 00:06 صبح
من باید قبل از کاری که شما گفتین بتونم اینو build کنم و بعد از فایلی که با پسوند dll به من میده استفاده کنم.
چه تغییری لازمه تا بتونم اینو build کنم. امکان این کار هست یا نه ؟؟

#target
یک شنبه 15 مرداد 1391, 01:02 صبح
چرا اصرار به این دارین که حتما فایل هدر باشه . (فکر کنم باید ی فایل CPP اضافه بشه تا پروژه بعنوان C++ شناخته بشه )
فایل DLL قرار داخل یک Solution ساخته بشه و فایل برنامه اصلی که قراره استفاده کنه تو ی Solution دیگه . اگه ینطوره این دو بهم ربط ندارن !

mahnaz0098
یک شنبه 15 مرداد 1391, 01:17 صبح
به این خاطر اصرار دارم هدر باشه چون می خوام از تابع loadlibrary درMatlab استفاده کنم و این تابع یک فایل هدر و یه فایل dll میگیره .

#target
یک شنبه 15 مرداد 1391, 01:40 صبح
والا وقتی dllexport کردی اسم تابع داخل ExportTable اون DLL قرار میگیره حالا میخواد داخل فایل .h باشه یا .cpp
حالا شما باید فقط تعریف توابع رو داخل هدر قرار بدین که به متلب میدی . کدتون رو داخل CPP قرار بده و دی ال ال رو کامپایل کن و ی فایل هیدر بساز برا اینکه به متلب بدی با این محتوی

extern "C" __declspec(dllexport) int CountLowerChar(char *str);
اینجا ی نمونه هست (http://www.codeproject.com/Articles/16550/Connecting-MATLAB-to-C-language-DLLs)