我是C ++新手,并被要求检索和处理来自质谱设备的数据。我得到了一些DLL库和他们的文档来执行此操作。这些库及其文档可以通过在这里与Thermo Fisher进行交流来找到:
https://thermo.flexnetoperations.com/control/thmo/RegisterMemberToAccount
软件包是MSFileReader 3.0。文档本身可以在这里查看:
我有64位版本的软件。我正在使用MS Visual Studio Community 2015.我选择使用运行时术语。我的代码如下。
#include <Windows.h>
#include <iostream>
#include <string>
int main()
{
HINSTANCE hInst = LoadLibrary(L"C:\\Nathan\\C++\\GetEvenOdd\\Debug\\XRawfile2_x64.dll");
if (!hInst)
{
std::cout << "\ncould Not Load the Library" << std::endl;
return EXIT_FAILURE;
}
else
{
std::cout << "\nSuccess" << std::endl;
}
//Resolve the function address
FreeLibrary(hInst);
return EXIT_SUCCESS;
}
令我困惑的是,当LoadLibrary()内的路径设置为我创建的另一个DLL时,程序指示加载成功;当我尝试加载XRawfile2_x64.dll时,程序返回&#34;无法加载库&#34;。编译时,VS返回以下内容。
1>------ Build started: Project: Loader, Configuration: Debug Win32 ------
1> Source.cpp
1> Loader.vcxproj -> C:\Nathan\C++\Loader\Debug\Loader.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
我创建的DLL如下。 标题 -
#ifndef EVENODD_H_
#define EVENODD_H_
#include <string>
class EvenOdd
{
public:
std::string CheckEvenOdd(const int iNum);
};
#endif //EVENODD_H_
源文件 -
#include "EvenOdd.h"
extern "C"
{
__declspec(dllexport) std::string CheckEvenOdd(const int iNum)
{
std::string strRes = "NULL";
if (iNum % 2 == 0)
{
strRes = "The given number is Even";
}
else {
strRes = "The given number is Odd";
}
return strRes;
}
}
根据这些信息,我如何加载MSFileReader包中包含的DLL文件?
答案 0 :(得分:0)
Visual Studio中的默认设置是构建32位应用程序。您无法从32位应用程序加载64位DLL。将您的构建配置更改为目标&#39; x64&#39;平台。这是你如何做到这一点: